SQLite 数据类型
SQLite数据类型是指定任何对象的数据类型的属性。在SQLite中,每个列、变量和表达式都有相关的数据类型。
在创建表时会使用这些数据类型。SQLite使用更通用的动态类型系统。在SQLite中,值的数据类型与其容器无关,而是与值本身关联。
SQLite存储类
存储在SQLite数据库中的每个值都有以下存储类之一-
编号 | 存储类别和描述 |
---|---|
1 | NULL 值为NULL。 |
2 | INTEGER 值为有符号整数,根据值的大小存储为1、2、3、4、6或8字节。 |
3 | REAL 值为浮点数,以8字节IEEE浮点数存储。 |
4 | TEXT 值为文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储。 |
5 | BLOB 值为数据的blob,存储方式与输入方式完全相同。 |
SQLite存储类比数据类型略为广泛。例如,INTEGER存储类包括6种不同长度的整数数据类型。
SQLite Affinity类型
SQLite支持列的Affinity概念。 类型Affinity性 。任何列仍然可以存储任何类型的数据,但列的首选存储类称为它的 Affinity性 。在SQLite3数据库中,每个表列被分配以下类型Affinity性之一−
序号 | Affinity与描述 |
---|---|
1 | TEXT 此列使用NULL、TEXT或BLOB存储类存储所有数据。 |
2 | NUMERIC 此列可以包含使用所有五个存储类的值。 |
3 | INTEGER 与具有NUMERICAffinity性的列相同,但在CAST表达式中有一个例外。 |
4 | REAL 与具有NUMERICAffinity性的列相同,但强制将整数值转换为浮点表示。 |
5 | NONE 具有Affinity性为NONE的列不偏好一种存储类别,也不尝试将数据从一种存储类别转换为另一种。 |
SQLite Affinity性和类型名称
以下表格列出了可以在创建SQLite3表时使用的各种数据类型名称,以及相应的Affinity性应用。
Data Type | Affinity |
---|---|
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 |
INTEGER |
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXTCLOB |
TEXT |
BLOB no datatype specified |
NONE |
REAL DOUBLE DOUBLE PRECISION FLOAT |
REAL |
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME |
NUMERIC |
布尔值数据类型
SQLite没有单独的布尔值存储类。相反,布尔值以整数0(假)和1(真)的形式存储。
日期和时间数据类型
SQLite没有单独的存储日期和/或时间的存储类,但SQLite可以将日期和时间存储为TEXT、REAL或INTEGER值。
序号 | 存储类和日期格式 |
---|---|
1 | TEXT 日期格式为”YYYY-MM-DD HH:MM:SS.SSS” |
2 | REAL 自公元前4714年11月24日格林威治时间中午以来的天数 |
3 | INTEGER 自1970-01-01 00:00:00 UTC以来的秒数 |
您可以选择以任何这些格式存储日期和时间,并可以使用内置的日期和时间函数自由地在各个格式之间进行转换。