答案将是因为这是在创建表或更改表并添加列时使用的。
实际上,您实际上可以拥有几乎任何东西的列类型(贴花),甚至类似的东西mycolumn rumplestiltskin NOT NULL
,这将被记录/存储(类型关联将是 NUMERIC)。SQLite 所做的是应用算法,然后使用一些简单的规则来应用 INTEGER、TEXT、NUMERIC、REAL 或 BLOB 的类型关联:-
3.1。列亲和性的确定 列的亲和性由列的声明类型确定,根据以下规则按所示顺序确定:
如果声明的类型包含字符串“INT”,则为其分配 INTEGER 亲和性。
如果列的声明类型包含任何字符串“CHAR”、“CLOB”或“TEXT”,则该列具有 TEXT 关联。请注意,类型 VARCHAR 包含字符串“CHAR”,因此被分配了 TEXT 亲和性。
如果列的声明类型包含字符串“BLOB”或者如果未指定类型,则该列具有亲缘关系 BLOB。
如果列的声明类型包含任何字符串“REAL”、“FLOA”或“DOUB”,则该列具有 REAL 亲和性。
否则,亲和性为 NUMERIC。
请注意,确定列亲和性的规则顺序很重要。声明类型为“CHARINT”的列将同时匹配规则 1 和 2,但第一个规则优先,因此列关联性将为 INTEGER。
SQLite 版本 3 中的数据类型
但是,除了作为 rowid 别名的列或rowid本身(必须具有唯一的 INTEGER)之外,您可以在任何类型的列中存储任何类型的值。根据之前给出的链接,数据的存储方式(存储类)存在细微差别。