2011-12-07 32 views
9

私はSQLiteについてかなり新しく、4つのデータ型しかないことに気づきましたが、私は人々が自分のデータ型を入れているオンラインの例を見ています。私はこれを本当に理解しておらず、誰かが私にそれを説明できるかどうか疑問に思っていました。たとえば、日付を保持する列があり、指定されたデータ型は存在しないタイムスタンプです。何がデフォルトになるのですか?自分で作ったときにテキストがデフォルトになっていますか?SQLiteカスタムデータ型?

答えて

14

sqlite3は、ダイナミックタイプのシステムを使用します。ストレージクラスは、 NULL、整数、実数、テキスト、およびblobの5つのみです。 (出典:Datatypes In SQLite Version 3。)

そして、そのページ引用する:SQLiteのバージョン3データベース内の列を

は、INTEGER PRIMARY KEY列を除いて、任意の記憶クラスの値を格納するために使用することができます。

integer primary keyの例外を除いて、SQLiteはタイプをまったく強制しません。つまり、あなたがあなたのcreate tableに入れたタイプ名は純粋に参考になります。

create table mytab (a apples, b bananas); 

は有効なcreate tableステートメントです。両方の列にタイムスタンプ、テキスト、BLOBを挿入できます(になるはずですが、そうすることはできません)。

詳細については、タイプシステムのリンクされたリファレンスドキュメントを参照してください。

sqlite> create table mytab (a apples, b bananas); 
sqlite> insert into mytab values (CURRENT_TIME, NULL); 
sqlite> insert into mytab values ('hello', 3.14159); 
sqlite> select * from mytab; 
14:59:18| 
hello|3.14159 

あなたの質問に直接答える:デフォルトはありません。記憶域タイプは、データベースの各値に関連付けられ、テーブルの列には関連付けられません。

+0

ありがとうございました。まさに私が探していたものです – Pittfall

関連する問題