MySQL中的CHAR和VARCHAR類型都用於存儲字符串(即文本),但它們的存儲方式不同。
它們都接受一個整數作為輸入,特別是從 0 到 255 。存儲一個字符需要一個字節。
因此,CHAR(10) 意味著每個列條目的長度不能超過 10 個字符。
CHAR
存儲CHAR格式數據所需的內存空間是固定的。繼續我們的例子,假設我們使用CHAR(10)作為我們的數據類型:
CHAR(10)
現在,假設我們添加“bob” 作為條目,該條目隻有 3 個字符長。有趣的是,這條數據實際上在我們的數據庫中存儲為“bob       “(即7個尾隨空格)。
這意味著即使技術上我們隻存儲 3 個字符,我們仍然使用 10 個字節。但是,當我們檢索此數據時,MySQL 將刪除幕後的尾隨空格,因此您不必擔心!
VARCHAR
VARCHAR和CHAR最大的區別是內存空間不固定。假設我們將數據類型設置為VARCHAR(10):
VARCHAR(10)
與 CHAR(10) 類似,我們不能存儲超過 10 個字符的字符串。
現在,假設我們存儲字符串 “bob” 。與 CHAR(10) 不同,MySQL 不添加任何尾隨空格,這在我們節省大量內存空間的意義上非常有用。然而,這裏需要注意的是,VARCHAR 每個數據需要 1 字節或 2 字節的額外存儲空間。更具體地說,它們存儲在前麵(即前綴)。
注意
前綴用於指示數據中的字節數。每個字節都可以用來表示字符。因此,對於 VARCHAR(10) 來說,所需的前綴僅占用 1 個字節,但例如 VARCHAR(400) ,前綴將占用 2 個字節。
| 
 值  | 
 字符(4)  | 
 需要存儲  | 
 VARCHAR(4)  | 
 需要存儲  | 
|---|---|---|---|---|
| 
 ''  | 
 ''  | 
 4字節  | 
 ''  | 
 1字節  | 
| 
 'ab'  | 
 'ab'  | 
 4字節  | 
 'ab'  | 
 3字節  | 
| 
 'abcd'  | 
 'abcd'  | 
 4字節  | 
 'abcd'  | 
 5字節  | 
| 
 'abcdefgh'  | 
 'abcd'  | 
 4字節  | 
 'abcd'  | 
 5字節  | 
相關用法
- MySQL CHARACTER_LENGTH()用法及代碼示例
 - MySQL CHAR_LENGTH()用法及代碼示例
 - MySQL CHAR_LENGTH方法用法及代碼示例
 - MySQL CHARACTER_LENGTH方法用法及代碼示例
 - MySQL CHAR方法用法及代碼示例
 - MySQL CURTIME()用法及代碼示例
 - MySQL Convert()用法及代碼示例
 - MySQL CONCAT()用法及代碼示例
 - MySQL CEIL方法用法及代碼示例
 - MySQL CEILING()用法及代碼示例
 - MySQL CONCAT方法用法及代碼示例
 - MySQL CURRENT_TIME()用法及代碼示例
 - MySQL CONV( )用法及代碼示例
 - MySQL CONVERT_TZ方法用法及代碼示例
 - MySQL COUNT()用法及代碼示例
 - MySQL CONVERT_TZ()用法及代碼示例
 - MySQL CONCAT_WS方法用法及代碼示例
 - MySQL CURDATE方法用法及代碼示例
 - MySQL CONVERT( )用法及代碼示例
 - MySQL COT()用法及代碼示例
 - MySQL CURRENT_TIME方法用法及代碼示例
 - MySQL COMPRESS( )用法及代碼示例
 - MySQL Count()用法及代碼示例
 - MySQL CONNECTION_ID( )用法及代碼示例
 - MySQL CURTIME方法用法及代碼示例
 
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | CHAR and VARCHAR。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
