①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個字符。