char和varchar兩種型別的區別

2022-07-07 15:30:16 字數 560 閱讀 8805

char型別是定長的,規定佔多少位,就佔多少位。資料不夠長度時,會用空格來進行填充,而如果資料超過定長,則會報錯。

varchar型別是不定長的,也就是varchar型別對應的列的資料長度是不一樣的。既然是不定長的,那麼我們如何知道資料的長度呢?這裡就需要特定的位元組來進行標識,前兩個位元組用來標記欄位的實際長度,結尾還需要乙個位元組來標識結束。

char的查詢效率是要高於varchar的查詢效率的。

一種比較簡單的理解,char是定長的,系統在進行查詢指定欄位的時候,只需要根據指定位元組的長度進行檢索就好,不涉及大量的計算。相反,由於varchar是不定長的,該型別還包含了開頭標識和結束標識,系統想要檢索特定的字段,還需要對這些標識內的資料長度進行大量的運算,因此,相比於char型別,查詢效率自然要低不少。

不論什麼應用場景,都需要圍繞著char和varchar型別的兩個基本特性來考量,也就是定長和不定長,這對應了現實中的一些資料,各有各的好處。比如對於定長資料,**號碼,性別,身份證號等,我們就是用char型別,可以提高查詢效率。而對於郵箱,姓名,物體名稱等不定長的資料,使用varchar則可以節約大量的資料空間。

參考鏈結

char和varchar2 varchar的區別

char和varchar2 varchar的區別 1 char是長度固定的型別,varchar2是動態變化的,譬如 存在字串 abcde 對於乙個大小為char 20 而言,它將儲存20個字元,但是有15個是空字元,而varchar 20 則是占用3個位元組的長度,20只是能儲存的最大值。2 cha...

char和varchar的區別

char char是定長的,也就是當你輸入的字元小於你指定的數目時,char 8 你輸入的字元小於8時,它會再後面補空值。當你輸入的字元大於指定的數時,它會擷取超出的字元。nvarchar n 包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的...

char 和 varchar的區別

varchar 儲存了可變長度的字串,是使用較多的字串型別。它比固定長度型別占用更少的儲存空間,因為它只占用了實際需要空間,比較靈活。但如果設定了row format fixed建立的myisam引擎表,那麼每行占用固定長的空間,就會造成浪費。varchar使用額外的1到2位元組來儲存值得長度。如果...