char、varchar、nchar、nvarchar、text的區別
#1.有var前綴的,表示是實際儲存空間是變長的,varchar,nvarchar
所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到對應的長度,當你輸入的字元大於指定的數時,它會截取超出的部分;而變長字元數據則不會以空格填充,比較例外的是,text儲存的也是可變長。
2.n表示Unicode字符,即所有字元都佔兩個位元組,nchar,nvarchar,
在字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組存儲,英文與漢字同時存在時容易造成混亂,Unicode字元集就是為了解決字元集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示
3.基於以上兩點來看看字段容量
#char(n),varchar(n) | #最多8000個英文,4000個漢字 | n表示輸入資料的位元組的實際長度 |
#nchar(n),nvarchar(n) | 可儲存4000個字符,無論英文或漢字 | n表示字符個數 |
4.使用(個人偏好)
a.如果資料量非常大,又能100%確定長度且保存只是ansi字符,那麼char
b.能確定長度又不一定是ansi字元或者,那麼用nchar;
c.對於超大數據,如文章內容,使用nText
d.其他的通用nvarchar
特點比較
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"。和char、varchar比較起來,nchar、nvarchar最多儲存4000個字符,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。
所以一般來說,如果含有中文字符,用nchar/nvarchar,如果純英文和數字,用char/varchar。 #
以上是char、varchar、nchar、nvarchar、text之間有哪些差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!