MySQL字符串和二进制
為了存儲字符串、圖片和聲音等數(shù)據(jù),MySQL提供了字符串和二進制類型。
數(shù)據(jù)類型
CHAR——用于表示固定長度的字符串
VARCHAR——用于表示可變長度的字符串
BINARY——用于表示固定長度的二進制數(shù)據(jù)
VARBINARY——用于表示可變長度的二進制數(shù)據(jù)
BOLB——用于表示二進制大數(shù)據(jù)
TEXT——用于表示大文本數(shù)據(jù)
ENUM——表示枚舉類型,只能存儲一個枚舉字符串值
SET——表示字符串對象,可以有零或多個值
BIT——表示位字段類型
CHAR和VARCHAR類型
都用來存儲字符串
VARCHAR,可以存儲可變長度的字符串
CHAR,存儲定長字符串
定義如下
CHAR (M)或者VARCHAR (M)
M指的是字符串的最大長度
比如
插入值’ab’
CHAR (4),需要4個字節(jié)
VARCHAR (4),需要3個字節(jié)
當(dāng)數(shù)據(jù)為CHAR (M)類型時,不管插入值的長度是多少,所占用的存儲空間都是M個字節(jié)。
當(dāng)為VARCHAR (M)類型時,所占用的字節(jié)數(shù)為實際長度加1。
BINARY和VARBINARY類型
類似于CHAR和VARCHAR
用來表示二進制數(shù)據(jù)
定義如下
BINARY (M)或者VARBINARY (M)
M指的是二進制數(shù)據(jù)的最大字節(jié)長度
注意
BINARY類型的長度是固定的,如果數(shù)據(jù)的長度不足最大長度,在后面用”\0”補齊。
比如,數(shù)據(jù)類型為BINARY (3),當(dāng)插入a時,實際存儲的是”a\0\0”
TEXT類型
用于表示大文本數(shù)據(jù)
比如,文章內(nèi)容、評論等
類型分為4中,如下
TINYTEXT
取值范圍:0~255字節(jié)
TEXT
取值范圍:0~65535字節(jié)
MEDIUMTEXT
取值范圍:0~16777215字節(jié)
LONGTEXT
取值范圍:0~4294967295字節(jié)
BLOB類型
一種特殊的二進制類型
用于表示數(shù)據(jù)量很大的二進制數(shù)據(jù)
比如,圖片、PDF文檔等
分為4種,如下
TINYBLOB
取值范圍:0~255字節(jié)
BLOB
取值范圍:0~65535字節(jié)
MEDIUMBLOB
取值范圍:0~16777215字節(jié)
LONGBLOB
取值范圍:0~4294967295字節(jié)
BLOB和TEXT區(qū)別
BLOB類型數(shù)據(jù),根據(jù)二進制編碼進行比較和排序
TEXT類型數(shù)據(jù),根據(jù)文本模式進行比較和排序
ENUM類型
枚舉類型
定義如下
ENUM (‘值1’,’值2’,’值3’,……,’值N’)
上述的(‘值1’,’值2’,’值3’,……,’值N’)稱為枚舉列表
ENUM類型的數(shù)據(jù),只能從枚舉列表中取,而且,只能取一個
枚舉列表中的值都有一個順序編號,存入的是這個順序編號,而不是列表的值
SET類型
用于表示字符串對象
它的值可以有0個,或多個。
SET類型的定義和ENUM類型類似
SET (‘值1’,’值2’,’值3’,……,’值N’)
與ENUM類型相同
(‘值1’,’值2’,’值3’,……,’值N’)列表中的每個值,都有一個順序編號,MySQL中存儲的是這個編號,而不是列表中的值
BIT類型
用于表示二進制
定義如下
BIT (M)
M表示每個值的位數(shù),范圍為1~64
注意
如果分配的BIT (M)的數(shù)據(jù)長度小于M,在數(shù)據(jù)的左邊用0補齊
比如
BIT (6)類型的插入值為’101’,實際存儲為’000101’
總結(jié)
以上是生活随笔為你收集整理的MySQL字符串和二进制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL日期和时间类型
- 下一篇: MySQL查看数据表