sqlite 數據類型總結

 

一般數據採用的固定的靜態數據類型,而SQLite採用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種數據類型:

1.NULL:空值。
2.INTEGER:帶符號的整型,具體取決有存入數字的範圍大小。
3.REAL:浮點數字,存儲爲8-byte IEEE浮點數。
4.TEXT:字符串文本。
5.BLOB:二進制對象。


但實際上,sqlite3也接受如下的數據類型:
 smallint 16 位元的整數。
 interger 32 位元的整數。
 decimal(p,s) p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點後有幾位數。如果沒有特別指定,則系統會設爲 p=5; s=0 。
 float  32位元的實數。
 double  64位元的實數。
 char(n)  n 長度的字串,n不能超過 254。
 varchar(n) 長度不固定且其最大長度爲 n 的字串,n不能超過 4000。
 graphic(n) 和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是爲了支援兩個字元長度的字體,例如中文字。
 vargraphic(n) 可變長度且其最大長度爲 n 的雙字元字串,n不能超過 2000
 date  包含了 年份、月份、日期。
 time  包含了 小時、分鐘、秒。
 timestamp 包含了 年、月、日、時、分、秒、千分之一秒。

datetime 包含日期時間格式,必須寫成'2010-08-05'不能寫爲'2010-8-5',否則在讀取時會產生錯誤!

Sqlite常用數據類型,

這句話本身就有問題,因爲:SQLite是無類型的. 這意味着你可以保存任何類型的數據到你所想要保存的任何表的任何列中, 無論這列聲明的數據類型是什麼(只有自動遞增Integer Primary Key纔有用). 對於SQLite來說對字段不指定類型是完全有效的. 如:

Create Table ex3(a, b, c);

即使SQLite允許忽略數據類型, 但是仍然建議在你的Create Table語句中指定數據類型. 因爲數據類型對於你和其他的程序員交流, 或者你準備換掉你的數據庫引擎是非常有用的. SQLite支持常見的數據類型, 如: 

SQL代碼
  1. CREATE TABLE ex2(    
  2. VARCHAR(10),    
  3. b NVARCHAR(15),   
  4. c TEXT,    
  5. INTEGER,   
  6. FLOAT,   
  7. f BOOLEAN,    
  8. g CLOB,    
  9. h BLOB,    
  10. TIMESTAMP,   
  11. NUMERIC(10,5),    
  12. VARYING CHARACTER (24),    
  13. NATIONAL VARYING CHARACTER(16)   
  14. );

char、varchar、text和nchar、nvarchar、ntext的區別

1、CHAR。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那麼不論你存儲的數據是否達到了10個字節,都要佔去10個字節的空間,不足的自動用空格填充。

2、VARCHAR。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義爲 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。爲什麼“+1”呢?這一個字節用於保存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、TEXT。text存儲可變長度的非Unicode數據,最大長度爲2^31-1(2,147,483,647)個字符。

4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字衆多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是爲了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar數據類型時不用擔心輸入的字符是英文還是漢字,較爲方便,但在存儲英文時數量上有些損失。  

    所以一般來說,如果含有中文字符,用nchar/nvarchar,如果純英文和數字,用char/varchar。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章