二進制類型是在數據庫中存儲二進制數據的數據類型。二進制類型包括binary,varbinary,bit,tinyblob,blob,mediumblob,longblob。這篇博客這裏整理一下二進制類型的特點和差異。
- binary類型和varbinary類型
binary類型和varbinary類型都是在創建表時指定了最大長度,其基本形式如下:字符串類型(M),其中,‘字符串類型’參數指定了數據類型爲binary類型還是varbinary類型,M參數指定了該二進制數的最大字節長度爲M。這與char類型和varchar類型相似。舉個例子,binary(10)就是指數據類型爲binary類型,其最大長度爲10。
binary類型的長度是固定的,在創建表時就指定了。不足最大長度的空間由‘\0’補全。舉個例子,binary(50)就是指定binary類型的長度爲50。
varbinary類型的長度是可變的,在創建表時指定了最大長度。指定好了varbinary類型的最大值以後,其長度可以在0到最大長度之間。舉個例子,varbinary(50)的最大字節長度是50,但是,不是每條記錄的字節長度都是50。在這個最大值範圍內,
使用多少分配多少。varbinary類型實際佔用的空間爲實際長度加一。這樣,可以有效的節約系統的空間。
- bit類型
bit類型也是在創建表時指定了最大長度,其基本形式如下:bit(M),其中,‘M’指定了該二進制數的最大字節長度爲M,M的最大值爲64。舉個例子,bit(4)就是數據類型爲bit類型,長度爲4。若字段的類型bit(4),存儲的數據是從0~~15。因爲,變成二
進制以後,15的值爲1111,長度爲4。如果插入的值爲16,其二進制數爲10000,長度爲5,超過了最大長度,因此,大於等於16的數是不能插入到bit(4)類型的字段中的。在查詢bit類型的數據時,要用bin(字段名+0)來將值轉換爲二進制顯示。我們現
在來實際操作下數據庫中這種類型:
建表語句如下:CREATE TABLE `linkinframe`.`test` (
`id` INT NOT NULL,
`a` BIT(4) NULL,
PRIMARY KEY (`id`));
現在我們往表中插入幾條數據:INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (1,0);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (2,1000);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (3,1110);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (4,10000);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (5,0);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (6,8);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (7,14);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (8,15);
執行如下查詢:SELECT * FROM linkinframe.test;
數據庫顯示如下:
SELECT BIN(a+0) FROM linkinframe.test;
數據庫顯示如下:- blob類型
- 關於幾種二進制類型的總結
2,實際編碼中,使用二進制類型並不多,至少我從來沒有使用過。這個就當瞭解一下好了。