SQL數據類型nchar,char,varchar與nvarchar區別

nchar與char是相似的,nvarchar與varchar是相似的。
char類型: 對英文(ASCII)字符佔用1個字節,對一個漢字佔用2個字節,CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義 char(10),那麼不論你存儲的數據是否達到了10個字節,都要佔去10個字節的空間,不夠的字符用空格去填。因爲是固定長度,所以速度效率高。
Varchar類型:Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"
而char 不一樣,比如char(100),它的值是"qian",而實際上它在數據庫中是"qian "(qian後共有96個空格,就是把它填滿爲100個字節)。
由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!
VARCHAR存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義爲 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。爲什麼“+1”呢?這一個字節用於保存實際使用了多大的長度。
nchar類型和Nvarchar類型是怎麼一回事呢?爲了與其他多種字符的轉換,如中文,音標等,對每個英文(ASCII)字符都佔用2個字節,對一個漢字也佔用兩個字節,所有的字符都佔用2個字節。
關於長度與漢字
比如nchar(20) char(20) varchar(20) nvarchar(20)

nchar(20) 可以存放20個漢字,如果漢字不夠20個,會補空格 比如:’河南省鄭州市 ’
char(20)只能存放10個漢字,如果漢字不夠10個,會補空格 ‘河南省鄭州市 ’
varchar(20)可以存放10個漢字,如果漢字不夠10個,不補空格 ‘河南省鄭州市
nvarchar(20) 可以存放20個漢字,如歌漢字不夠20個,不補空格 ‘河南省鄭州市’

前頭帶n的,是統一字符編碼,nchar(1)nvarchar(1)就能放1個漢字,不帶N的是char(2) varchar(2) 才能放一個漢字,

帶var的,是可變長的意思,nchar/char,如果長度沒有佔滿,會補空格,nvarchar/varchar是變長的,長度佔不滿也不補空格
發佈了9 篇原創文章 · 獲贊 24 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章