注册 登录

清河洛

SQLite的数据类型

qingheluo2017-04-18清河洛453
SQLite的数据类型与许多其他数据库系统不同,它采用了一种动态类型系统这意味着可以将不同类型的数据存储在同一列中而不会报错SQLite定义了5中“存储类”,用于表示数据优先以何种方式进行存储,注意仅仅是优先也就是说在指定了类型的列中可以存储任何其他类型数据而不会报错,SQLite会自动识别并存储SQLite提出了“类型亲和性”行为,根据类型动态推断优先以哪种存储类来存储数据SQLite支持以下存储类: NULL :表示该处没有数据 INTEGER :存储整数,根据整数大小占用1、2、3、4、6或8字节 亲和性:类型为INTEGER或BOOLEAN时,当设置为PRIMAR...

SQLite的数据类型与许多其他数据库系统不同,它采用了一种动态类型系统

这意味着可以将不同类型的数据存储在同一列中而不会报错

SQLite定义了5中“存储类”,用于表示数据优先以何种方式进行存储,注意仅仅是优先

也就是说在指定了类型的列中可以存储任何其他类型数据而不会报错,SQLite会自动识别并存储

SQLite提出了“类型亲和性”行为,根据类型动态推断优先以哪种存储类来存储数据

SQLite支持以下存储类:

NULL    :表示该处没有数据

INTEGER :存储整数,根据整数大小占用1、2、3、4、6或8字节
    亲和性:类型为INTEGER或BOOLEAN时,当设置为PRIMARY KEY时也会视为INTEGER

REAL    :存储浮点数,以8字节IEEE浮点数的形式存储
    亲和性:类型包含REAL、FLOA、DOUB时

TEXT    :存储任何形式的字符串数据
    亲和性:类型包含TEXT、VARCHAR、CHAR、CLOB、DATE、JSON时

NUMERIC :灵活存储数值,
    如果数据可以无损转换为整数,会将其存储为INTEGER
    如果数据看起来像一个实数(有一个小数点或指数部分),会尝试将其存储为REAL
    如果数据无法转换为整数或实数,会将其存储为TEXT
    亲和性:类型包含NUMERIC、INT、BOOL、DATE时

BLOB    :存储Blob数据(二进制大对象),即以输入的确切形式存储的数据

TYPE(NUM)格式,如TEXT(20),用于在设定列数据类型的同时限制数据大小,

该写法在SQLite中可以被识别但是并不会产生任何实际效果,不会影响存储格式或性能,并不会因为列声明中的长度限制而截断文本数据或分配固定的存储空间

SQLite的排序

由于SQLite的动态类型系统,可以在一个列中插入任何类型的数据

当在包含混合数据类型的列上进行ORDER BY排序时,SQLite将使用其类型亲和性规则和内部比较逻辑来决定如何排序这些值

1、NULL值最小
2、接着是INTEGER和REAL,按照数值大小进行排序
3、然后是TEXT,按照文本的二进制比较顺序(ASCII值)进行排序
4、最后是BLOB值,同样按照二进制比较顺序排序


网址导航