SQLiteでのデータ型
本日は、SQLiteネタである。
SQLiteには、データ型があってないようなものとなっている。
普通のデータベースシステムには、データ型が存在する。
OracleやSQL Serverには、CHARやVARCHAR、NUMBERやINTEGER、DATEやらDATETIMEなんていう型が存在している。MS Accessにだってある。
CHARとVARCHARは「文字列型」
NUMBER、INTEGERは「整数型」
DATE、DATETIMEは「日付時刻型」
データ型は「列(フィールド)」に対して設定できる。数値型に設定された列には、数値が記録できる。文字列は記録できない。文字列を記録しようと思ったら、文字列型に設定しなければならない。
データ型には許容できる数値の大きさが付き物となっている。
データベースが大容量のストレージを持っていたとしても、無制限にデータを記録できるものではないし、記憶領域の大きさを決めた方が、効率的である。
例えば、以下のようなテーブルをOracleに作成したとする。
CREATE TABLE foo ( text VARCHAR2(10), num NUMBER(8) );
fooテーブルの、text列には、最大で10バイトの文字列データを記録できる。
num列は、NUMBER型なので、数値を記録可能ではあるが、(8)となっているので、最大8桁の整数値を記録可能となっている。
text列に、数字から構成される文字列を記録することはできる。例えば、以下のようなINSERT命令はOKである。
INSERT INTO foo(text) VALUES('123');
num列に対して、文字列を記録するような命令は、エラーとなり実行できない。
INSERT INTO foo(num) VALUES('text');
これと同じことをSQLiteでやってみると
CREATE TABLE foo ( text TEXT, num NUMERIC ); INSERT INTO foo(text) VALUES('123'); INSERT INTO foo(num) VALUES('text');
どちらのINSERT命令も成功する。
SELECT * FROM foo text num ----------------------- 123 text
こんな感じでちゃんと記録できる。
便利なんだか、ルーズなんだか。
ちなみに、CREATE TABLEでの列定義でデータ型を省略できる。
CREATE TABLE foo ( text, num );
関連記事
SQLポケットリファレンスの歴史
SQLポケットリファレンスの歴史その2
SQLポケットリファレンスが第4版になりました
改訂第4版 SQLポケットリファレンス電子版
「SQLite for Excel」 Excel VBAからSQLiteデータベースを使用する
投稿者プロフィール

最新の投稿
コンピューター関係の記事2025年4月23日AdSense審査に無事パス
コンピューター関係の記事2025年4月22日SSブログ復活
コンピューター関係の記事2025年4月22日SSブログが無くなった余波は大きい
コンピューター関係の記事2025年4月21日続々 サーバマシンはFANレスじゃないと嫌オジサンの話