2022年10月22日 | [sqlite] csharp
sqlite 中的类型
存储类型(Storage Classes),在 sqlite 中一个值的类型与值本身相关,并不与所在“容器”相关。
存储类型 | 说明 |
---|---|
NULL | NULL值 |
INTEGER | 一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 一个 blob 数据,完全根据它的输入存储。 |
亲和类型(Type Affinity) 为了最大化保证 SQLite与其他数据库的兼容性,SQLite 可以使用其他关系数据库的类型,如下所示:
CREATE TABLE t1(a INT, b VARCHAR(10));
INSERT INTO t1(a,b) VALUES('123',456);
SQLite 在列上支持“类型亲和”的概念,列的亲和类型是该列数据的推荐类型。这里的重要思想是该类型是推荐的,而不是必需的。列仍然可以存储任何类型的数据。 只是对于某些列,会更喜欢使用一个存储类而不是另一个。 列的首选存储类称为“亲和类型”。 下表显示了当你指定某些类型时候,列对应的亲和类型:
C#类型 | sqlite类型,创建表时可指定的类型 | 亲和类型/Type Affinity(存储类型) |
---|---|---|
Int32 Int64 |
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 |
INTEGER |
String | CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB |
TEXT |
Binary | BLOB 未指定类型 |
BLOB |
Double Float |
REAL DOUBLE DOUBLE PRECISION FLOAT |
REAL |
DateTime Boolean |
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME |
NUMERIC |