複製鏈接
請複製以下鏈接發送給好友

二進制字符串

鎖定
二進制字符串一般用於存儲二進制的大對象,二進制字符串類型有BIT、BLOB、BINARY和VARBINARY。 [1] 
中文名
二進制字符串
外文名
VARCHAR
定    義
存儲二進制的對象
類    型
BIT、BLOB等
系    統
計算機
應用學科
計算機原理

二進制字符串公式簡介

與字符串一樣,二進制字符串也是一個字節序列。但與通常包含文本格式信息的字符串不同,二進制串用於存儲非傳統數據,如圖像、音頻和視頻文件、程序可執行文件等。二進制字符串可以用於與字符串類似的目的(例如,以Microsoft Word格式存儲文檔),但兩種數據類型不兼容;兩者的差別如同文本和同一文本的照片。 [2] 
在實際操作中,一般不建議將二進制的大文件存儲在數據庫中,而是將大對象的物理位置存儲在數據中,但是有特殊需要的情況下,還是有將二進制大對象存儲在數據庫的可能。 [1] 
二進制字符串和普通字符串的區別有兩個:首先,二進制字符串完全可以存儲字節零值,以及其他“不可打印”的字節(定義在32到126範圍之外的字節)。普通字符串不允許存儲字節零值.並且也不允許存儲那些不符合選定的字符集編碼的非法字節值或字節序列 第二,對二進制字符串的處理實際上就是處理字節,而對字符串的處理,則取決於區域設置。簡單地説,二進制字符串適用於存儲那些程序員認為是“原始字節”的數據,比如圖片內容,而字符串則適合存儲文本。 [3] 

二進制字符串二進制字符串類型

MySQL中的二進制數據類型有:BIT、BINARYVARBINARY、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

二進制字符串BIT類型

BIT類型是位字段類型。M表示每個值的位數,範圍為l~64。如果M被省略,默認為1。如果為BIT(M)列分配的值的長度小於M位,在值的左邊用0填充。例如,為BIT(6)列分配一個值b’101’,其效果與分配b'000101’相同。BIT數據類型用來保存位字段值,例如:以二進制的形式保存數據13,13的二進制形式為1101,在這裏需要位數至少為4位的BIT類型,即可以定義列類型為BIT(4)。大於二進制ll ll的數據是不能插入BIT(4)類型的字段中的。

二進制字符串BINARY和VARBINARY類型

BINARY和VARBINARY類型類似於CHAR和VARCHAR,不同的是它們包含二進制字節字符串。其使用的語法格式如下:
列名稱 BINARY(M)或者VARBINARY(M);
BINARY類型的長度是固定的,指定長度之後,不足最大長度的,將在它們右邊填充‘\0’補齊以達到指定長度。例如:指定列數據類型為BINARY(3),當插入‘a’時,存儲的內容實際為“a\0\0”,當插入“ab”時,實際存儲的內容為“ab\0”,不管存儲的內容是否達到指定的長度,其存儲空間均為指定的值M。
VARBlNARY類型的長度是可變的,指定好長度之後,其長度可以在0到最大值之間。例如:指定列數據類型為VARBINARY(20),如果插入的值的長度只有10,則實際存儲空間為10加l,即其實際佔用的空間為字符串的實際長度加l。

二進制字符串BLOB類型

BLOB是一個二進制大對象,用來存儲可變數量的數據。BLOB類型分為4種:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,它們可容納值的最大長度不同,如表所示。
數據類型
存儲範圍
TINYBLOB
最大長度為
BLOB
最大長度為
MEDIUMBLOB
最大長度為
LONGBLOB
最大長度為
BLOB列存儲的是二進制字符串(字節字符串);TEXT列存儲的是非二進制字符串(字符字符串)。BLOB列沒有字符集,並且排序和比較基於列值字節的數值;TEXT列有一個字符集,並且根據字符集對值進行排序和比較。 [4] 
參考資料
  • 1.    飛狼,李春萌,楊涵編著,SQL Server 2005數據庫管理與應用指南,人民郵電出版社,2007.8,第52頁
  • 2.    (美)Alex Kriegel,Boris M.Trukhnov著;高偉,田俊靜,王新南等譯,SQL寶典,人民郵電出版社,2009.05,35-36
  • 3.    唐成著,POSTGRESQL修煉之道 從小工到專家=GUIDE TO EXPERT,THE PRAGMATIC POSTGRESQL,機械工業出版社,2015.04,第67頁
  • 4.    李波編著,MySQL從入門到精通 (視頻教學版),清華大學出版社,2015.06,97-99