column-def nametypeCONSTRAINTnamecolumn-constraint?
type typename.
typename(number).
typename(number,number)
column-constraint
NOT NULLconict-clause.
PRIMARY KEYsort-order conict-clause
AUTOINCREMENT.
UNIQUEconict-clause.
CHECK (expr).
DEFAULTvalue.
COLLATEcollation-name
constraint PRIMARY KEY (column-list)conict-clause.
UNIQUE (column-list)conict-clause.
CHECK (expr)
conict-clause ON CONFLICTconict-algorithm
语句基本上就是!!关键字后跟一个新的表名以及括号内的一
堆 定义和约束。 表名可以是字符串或者标识符。以!sqlite_!开头的表名是留给数据库引擎使
用的。
每个字段的定义是字段名后跟字段的数据类型,接着是一个或多个的字段约束。字段的 数据类
型并不限制 字段中可以存放的数据。可以查看 的数据类型获取 更多信息。
约束为指定的字段创建索引,该索引须含有唯一键。 子句说明在比较字段的 文字记
录时所使用的排序函数。缺省使用内嵌的 排序函数。
3 约束说明在使用 插入字段时所使用的缺省值。 该值可以是 ,字符串
常 量 或 一 个 数 。 从 ( 版 开 始 , 缺 省 值 也 可 以 是 以 下 特 殊 的 与 事 件 无 关 的 关 键 字
或 若缺省值为 字符串常
量 或 数 , 在 执 行 未 指 明 字 段 值 的 语 句 的 时 候 它 被 插 入 字 段 。 若 缺 省 值 是
或 则当前 日期和7或时间
被插入字段。 的 格式为 "", 为 66,
而 是!66""!
正常情况下定义 2 只是在相应字段上创建一个 索引。然而,若主键定义
在单一的 1 类型的字段上, 则该字段在内部被用作表的 6, 键。这即是说字段仅能
容纳唯一整数值。/在除此之外的其它情况下, 忽略数据类型的说明 ,允许任何类型的
数据放入字段中,不管该字段被声明为什么数据类型。 0若一个表中不含一个 1
2 字段,则 6, 键 为自动产生的整数。一行的 6, 键可以通过如下特殊的
名字!ROWID!!OID!或 !_ROWID_!进行访问,不论是否有 12 存
在 。 1 2 字 段 可 以 使 用 关 键 字 声 明 。
关键字修改了 6, 键自动产生的方式。6, 键的生成 的其它信息可
以在这里找到。
若!!或!!关键字出现在!!和!!之间,则所建立的表仅在当前
数据库连接可见,并在断开连接时 自动被删除。在临时表上建立的任何索引也是临时的。临时
表和索引单独存储在与主数据库文件不同的文件中。