MySQL數據類型--二進制類型


二進制類型是在數據庫中存儲二進制數據的數據類型。二進制類型包括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類型
blob類型是一種特殊的二進制類型。blob可以用來保存數據量很大的二進制數據,如圖片等。blob類型包括tinyblob,blob,mediumblob,longblob。這幾種blob類型最大的區別就是能夠保存的最大長度不同。longblob的長度最大,tinyblob的長度最小。blob類型與text類型很類似,不同點在於blob類型用於存儲二進制數據,blob類型數據是根據其二進制編碼進行比較和排序的,而text類型是文本模式進行比較和排序的。


  • 關於幾種二進制類型的總結
1,blob類型主要用來存儲圖片,PDF文檔等二進制文件,通常情況下,可以將圖片,PDF文檔都可以存儲在文件系統中,然後在數據庫中存儲這些文件的路徑,這種方式存儲比直接存儲在數據庫中簡單,但是訪問速度比存儲在數據庫中慢。
2,實際編碼中,使用二進制類型並不多,至少我從來沒有使用過。這個就當瞭解一下好了。

發佈了284 篇原創文章 · 獲贊 66 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章