2011-12-07 142 views
9

我对SQLITE相当陌生,我注意到只有4种数据类型,但我在网上看到的例子是人们将自己的数据类型放入其中。我真的不明白这一点,并想知道是否有人可以向我解释这一点。例如,我看到一列将保存一个日期,并给出的数据类型是不存在的时间戳。它默认是什么?当你自己创建文本时,它是否默认为文本?SQLITE自定义数据类型?

回答

14

sqlite3使用动态类型系统。只有五个存储类: NULL,整数,实数,文本和blob。 (来源: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

Thanks Mat,那就是我一直在寻找的东西 – Pittfall