下列存儲類
① sqlite數據類型有哪些
SQLite
數據類型是一個用來指定任何對象的數據類型的屬性。SQLite
中的每一列,每個變數和表達式都有相關的數據類型。
您可以在創建表的同時使用這些數據類型。SQLite
使用一個更普遍的動態類型系統。在
SQLite
中,值的數據類型與值本身是相關的,而不是與它的容器相關。
SQLite
存儲類
每個存儲在
SQLite
資料庫中的值都具有以下存儲類之一:
存儲類
描述
NULL
值是一個
NULL
值。
INTEGER
值是一個帶符號的整數,根據值的大小存儲在
1、2、3、4、6
或
8
位元組中。
REAL
值是一個浮點值,存儲為
8
位元組的
IEEE
浮點數字。
TEXT
值是一個文本字元串,使用資料庫編碼(UTF-8、UTF-16BE
或
UTF-16LE)存儲。
BLOB
值是一個
blob
數據,完全根據它的輸入存儲。
SQLite
的存儲類稍微比數據類型更普遍。INTEGER
存儲類,例如,包含
6
種不同的不同長度的整數數據類型。
SQLite
親和(Affinity)類型
SQLite支持列的親和類型概念。任何列仍然可以存儲任何類型的數據,當數據插入時,該欄位的數據將會優先採用親緣類型作為該值的存儲方式。SQLite目前的版本支持以下五種親緣類型:
親和類型
描述
TEXT
數值型數據在被插入之前,需要先被轉換為文本格式,之後再插入到目標欄位中。
NUMERIC
當文本數據被插入到親緣性為NUMERIC的欄位中時,如果轉換操作不會導致數據信息丟失以及完全可逆,那麼SQLite就會將該文本數據轉換為INTEGER或REAL類型的數據,如果轉換失敗,SQLite仍會以TEXT方式存儲該數據。對於NULL或BLOB類型的新數據,SQLite將不做任何轉換,直接以NULL或BLOB的方式存儲該數據。需要額外說明的是,對於浮點格式的常量文本,如"30000.0",如果該值可以轉換為INTEGER同時又不會丟失數值信息,那麼SQLite就會將其轉換為INTEGER的存儲方式。
INTEGER
對於親緣類型為INTEGER的欄位,其規則等同於NUMERIC,唯一差別是在執行CAST表達式時。
REAL
其規則基本等同於NUMERIC,唯一的差別是不會將"30000.0"這樣的文本數據轉換為INTEGER存儲方式。
NONE
不做任何的轉換,直接以該數據所屬的數據類型進行存儲。
SQLite
親和類型(Affinity)及類型名稱
下表列出了當創建
SQLite3
表時可使用的各種數據類型名稱,同時也顯示了相應的親和類型:
數據類型
親和類型
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)
TEXT
CLOB
TEXT
BLOB
no
datatype
specified
NONE
REAL
DOUBLE
DOUBLE
PRECISION
FLOAT
REAL
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC