首頁 > mysql教程 閱讀:0更新時間:2020-03-28 04:06:19

MySQL BIT、BINARY、VARBINARY、BLOB(二進制類型)

mysql 支持兩類字符型數據:文本字符串和二進制字符串。上節《MySQL字符串類型》我們講了文本字符串,這節我們來講解二進制字符串。
二進制字符串類型有時候也直接被稱為“二進制類型”。
MySQL 中的二進制字符串有 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOBLONGBLOB。

下表中列出了 MySQL 中的二進制數據類型,括號中的M表示可以為其指定長度。

類型名稱 說明 存儲需求
BIT(M) 位字段類型 大約 (M+7)/8 字節
BINARY(M) 固定長度二進制字符串 M 字節
VARBINARY (M) 可變長度二進制字符串 M+1 字節
TINYBLOB (M) 非常小的BLOB L+1 字節,在此,L<2^8
BLOB (M) 小 BLOB L+2 字節,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字節,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字節,在此,L<2^32

BIT 類型

位字段類型。M 表示每個值的位數,范圍為 1~64。如果 M 被省略,默認值為 1。如果為 BIT(M) 列分配的值的長度小于 M 位,在值的左邊用 0 填充。例如,為 BIT(6) 列分配一個值 b'101',其效果與分配 b'000101' 相同。

BIT 數據類型用來保存位字段值,例如以二進制的形式保存數據 13,13 的二進制形式為 1101,在這里需要位數至少為 4 位的 BIT 類型,即可以定義列類型為 BIT(4)。大于二進制 1111 的數據是不能插入 BIT(4) 類型的字段中的。

提示:默認情況下,MySQL 不可以插入超出該列允許范圍的值,因而插入數據時要確保插入的值在指定的范圍內。

BINARY 和 VARBINARY 類型

BINARY 和 VARBINARY 類型類似于 CHAR 和 VARCHAR,不同的是它們包含二進制字節字符串。使用的語法格式如下:

列名稱 BINARY(M) 或者 VARBINARY(M)

BINARY 類型的長度是固定的,指定長度后,不足最大長度的,將在它們右邊填充 “\0” 補齊,以達到指定長度。例如,指定列數據類型為 BINARY(3),當插入 a 時,存儲的內容實際為 “\a0\0”,當插入 ab 時,實際存儲的內容為“ab\0”,無論存儲的內容是否達到指定的長度,存儲空間均為指定的值 M。

VARBINARY 類型的長度是可變的,指定好長度之后,長度可以在 0 到最大值之間。例如,指定列數據類型為 VARBINARY(20),如果插入的值長度只有 10,則實際存儲空間為 10 加 1,實際占用的空間為字符串的實際長度加 1。

BLOB 類型

BLOB 是一個二進制的對象,用來存儲可變數量的數據。BLOB 類型分為 4 種:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,它們可容納值的最大長度不同,如下表所示。

數據類型 存儲范圍
TINYBLOB 最大長度為255 (28-1)字節
BLOB 最大長度為65535 (216-1)字節
MEDIUMBLOB 最大長度為16777215 (224-1)字節
LONGBLOB 最大長度為4294967295或4GB (231-1)字節

BLOB 列存儲的是二進制字符串(字節字符串),TEXT 列存儲的是非進制字符串(字符字符串)。BLOB 列是字符集,并且排序和比較基于列值字節的數值;TEXT 列有一個字符集,并且根據字符集對值進行排序和比較。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

国产亚洲欧美日韩