6、(二进制类型)BIT、BINARY、VARBINARY、BLOB
MySQL 支持兩類字符型數(shù)據(jù):文本字符串和二進(jìn)制字符串。
二進(jìn)制字符串類型有時(shí)候也直接被稱為“二進(jìn)制類型”。
MySQL 中的二進(jìn)制字符串有 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
下表中列出了 MySQL 中的二進(jìn)制數(shù)據(jù)類型,括號(hào)中的M表示可以為其指定長(zhǎng)度。
BIT 類型
位字段類型。M 表示每個(gè)值的位數(shù),范圍為 1~64。如果 M 被省略,默認(rèn)值為 1。如果為 BIT(M) 列分配的值的長(zhǎng)度小于 M 位,在值的左邊用 0 填充。例如,為 BIT(6) 列分配一個(gè)值 b’101’,其效果與分配 b’000101’ 相同。
BIT 數(shù)據(jù)類型用來保存位字段值,例如以二進(jìn)制的形式保存數(shù)據(jù) 13,13 的二進(jìn)制形式為 1101,在這里需要位數(shù)至少為 4 位的 BIT 類型,即可以定義列類型為 BIT(4)。大于二進(jìn)制 1111 的數(shù)據(jù)是不能插入 BIT(4) 類型的字段中的。
提示:默認(rèn)情況下,MySQL 不可以插入超出該列允許范圍的值,因而插入數(shù)據(jù)時(shí)要確保插入的值在指定的范圍內(nèi)。
BINARY 和 VARBINARY 類型
BINARY 和 VARBINARY 類型類似于 CHAR 和 VARCHAR,不同的是它們包含二進(jìn)制字節(jié)字符串。使用的語(yǔ)法格式如下:
列名稱 BINARY(M) 或者 VARBINARY(M)BINARY 類型的長(zhǎng)度是固定的,指定長(zhǎng)度后,不足最大長(zhǎng)度的,將在它們右邊填充 “\0” 補(bǔ)齊,以達(dá)到指定長(zhǎng)度。例如,指定列數(shù)據(jù)類型為 BINARY(3),當(dāng)插入 a 時(shí),存儲(chǔ)的內(nèi)容實(shí)際為 “\a0\0”,當(dāng)插入 ab 時(shí),實(shí)際存儲(chǔ)的內(nèi)容為“ab\0”,無論存儲(chǔ)的內(nèi)容是否達(dá)到指定的長(zhǎng)度,存儲(chǔ)空間均為指定的值 M。
VARBINARY 類型的長(zhǎng)度是可變的,指定好長(zhǎng)度之后,長(zhǎng)度可以在 0 到最大值之間。例如,指定列數(shù)據(jù)類型為 VARBINARY(20),如果插入的值長(zhǎng)度只有 10,則實(shí)際存儲(chǔ)空間為 10 加 1,實(shí)際占用的空間為字符串的實(shí)際長(zhǎng)度加 1。
BLOB 類型
BLOB 是一個(gè)二進(jìn)制的對(duì)象,用來存儲(chǔ)可變數(shù)量的數(shù)據(jù)。BLOB 類型分為 4 種:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,它們可容納值的最大長(zhǎng)度不同,如下表所示。
| TINYBLOB | 最大長(zhǎng)度為255 (2^8-1)字節(jié) |
| BLOB | 最大長(zhǎng)度為65535 (2^16-1)字節(jié) |
| MEDIUMBLOB | 最大長(zhǎng)度為16777215 (2^24-1)字節(jié) |
| LONGBLOB | 最大長(zhǎng)度為4294967295或4GB (2^31-1)字節(jié) |
BLOB 列存儲(chǔ)的是二進(jìn)制字符串(字節(jié)字符串),TEXT 列存儲(chǔ)的是非進(jìn)制字符串(字符字符串)。BLOB 列是字符集,并且排序和比較基于列值字節(jié)的數(shù)值;TEXT 列有一個(gè)字符集,并且根據(jù)字符集對(duì)值進(jìn)行排序和比較。
總結(jié)
以上是生活随笔為你收集整理的6、(二进制类型)BIT、BINARY、VARBINARY、BLOB的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5、(字符串类型)CHAR、VARCHA
- 下一篇: 11、InnoDB存储引擎