深刻char、varchar、text和nchar、nvarchar、ntext的差別詳解。本站提示廣大學習愛好者:(深刻char、varchar、text和nchar、nvarchar、ntext的差別詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻char、varchar、text和nchar、nvarchar、ntext的差別詳解正文
許多開辟者停止數據庫設計的時刻常常並沒有太多的斟酌char, varchar類型,有的是基本就沒留意,由於存儲價錢變得愈來愈廉價了,忘卻了最開端的一些根本設計實際和准繩,這點讓我想到了如今的年青人,年夜手一揮一把國民幣就從他手裡溜走了,其實我想不論是做人也好,做開辟也好,細節的掌握直接決議許多器械。固然還有一部門人是基本就沒弄清晰他們的差別,也就隨意選一個。在這裡我想對他們做個簡略的剖析,固然假如有纰謬的處所願望年夜家指教。
1、CHAR。CHAR存儲定長數據很便利,CHAR字段上的索引效力級高,好比界說char(10),那末豈論你存儲的數據能否到達了10個字節,都要占去10個字節的空間,缺乏的主動用空格填充,所以在讀取的時刻能夠要屢次用到trim()。
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
我把他們的差別歸納綜合成:
CHAR,NCHAR 定長,速度快,占空間年夜,需處置
VARCHAR,NVARCHAR,TEXT 不定長,空間小,速度慢,無需處置
NCHAR、NVARCHAR、NTEXT處置Unicode碼