1. 程式人生 > >mysql中char和varchar和text的區別(不看後悔,一看必懂)

mysql中char和varchar和text的區別(不看後悔,一看必懂)

①CHAR是一種固定長度的型別,適合用在身份證號碼、手機號碼等定。,VARCHAR則是一種可變長度的型別。適合用在長度可變的屬性。 text不設定長度, 當不知道屬性的最大長度時,適合用text。

②按照查詢速度: char最快, varchar次之,text最慢。

也就是說,定義一個char[10]和varchar[10],如果存進去的是‘csdn’,那麼char所佔的長度依然為10,除了字元‘csdn’外,後面跟六個空格,而varchar就立馬把長度變為4了,取資料的時候,char型別的要用trim()去掉多餘的空格,而varchar是不需要的。儘管如此,char的存取數度還是要比varchar要快得多,因為其長度固定,方便程式的儲存與查詢;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率

③在新版本的mysql中char(n)和varchar(n)中的n表示的都是字元數

其中char中的n最大長度是255個字元,如果是utf8編碼方式, 那麼char型別佔255 * 3個位元組。(utf8下一個字元佔用1至3個位元組)

varchar最大空間是65535個位元組, 存放字元數量跟字符集有關係;varchar實際範圍是65532或65533, 因為內容頭部會佔用1或2個位元組儲存該字串的長度;如果欄位default null(即預設值為空),整條記錄還需要1個位元組儲存預設值null。如果是utf8編碼, 那麼varchar最多存65532/3 = 21844個字元。