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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。