SQLite与其他常见的DBMS的最大不同是它对数据类型的支持。其他常见的DBMS通常支持强类型的数据,也就是每一列的类型都必须预先 指定,但是SQLite采用的是弱类型的字段。实际上,其内部仅有下列五种存储类型: 
NULL: 表示一个NULL值 
INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储. 
REAL: IEEE 浮点数 
TEXT: 按照字符串来存储 
BLOB: 按照二进制值存储,不做任何改变. 
要注意,这些类型是值本身的属性,而不是列的属性. 
但是为了和其他DBMS(以及SQL标准)兼容,在其create table语句中可以指定列的类型,为此,SQLite有个列相似性的概念(Column Affinity). 列相似性是列的属性,SQLite有以下几种列相似性: 
TEXT: TEXT列使用NULL,TEXT或者BLOB存储任何插入到此列的数据,如果数据是数字,则转换为TEXT. 
NUMERIC: NUMERIC列可以使用任何存储类型,它首先试图将插入的数据转换为REAL或INTEGER型的,如果成功则存储为REAL和INTEGER型,否则 不加改变的存入. 
INTEGER:和NUMERIC类似,只是它将可以转换为INTEGER值都转换为 INTEGER,如果是REAL型,且没有小数部分,也转为INTEGER 
REAL: 和NUMERIC类型 只是它将可以转换为REAL和INTEGER值都转换为REAL. 
NONE:不做任何改变的尝试. 
SQLite根据create table语句来决定每个列的列相似性.规则如下(大小写均忽略): 
1. 如果数据类型中包括INT,则是INTEGER 
2. 如果数据类型中包括CHAR,CLOB,TEXT则是TEXT 
3. 如果数据类型中包括BLOB,或者没有指定数据类型,则是NONE 
4. 如果数据类型中包括REAL,FLOA或者DOUB,则是REAL 
5. 其余的情况都是NUMERIC 
由上可知,对于sqlite来说 char,varchar,nchar,nvarchar等都是等价的,且后面最大长度也是没有意义的。但是对于其他DBMS却不是相同的。另外,列相似 性仅仅是向Sqlite提出了一个存储数据的建议,即使实际存储的数据类型和列相似性不一致,SQLite还是可以成功插入的,下面给出一个例子来说明下 以上论述,注意,这个例子需要在SQLite的命令行下运行,如果在SQLite Expert工具下执行,SQLite会进行一些额外的处理。