【发布时间】:2012-01-15 01:50:15
【问题描述】:
我对 SQLITE 相当陌生,我注意到只有 4 种数据类型,但我在网上看到人们放入自己的数据类型的示例。我真的不明白这一点,想知道是否有人可以向我解释。例如,我看到一个包含日期的列,并且给出的数据类型是不存在的时间戳。它默认是什么?自己制作时是否默认为文本?
【问题讨论】:
我对 SQLITE 相当陌生,我注意到只有 4 种数据类型,但我在网上看到人们放入自己的数据类型的示例。我真的不明白这一点,想知道是否有人可以向我解释。例如,我看到一个包含日期的列,并且给出的数据类型是不存在的时间戳。它默认是什么?自己制作时是否默认为文本?
【问题讨论】:
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
直接回答您的问题:没有默认值。存储类型与存储在数据库中的每个值相关联,而不是与表的列相关联。
【讨论】: