MySql 二進位制型別

2021-07-06 03:50:50 字數 2453 閱讀 2350

二進位制型別是在資料庫中儲存二進位制資料的資料型別。二進位制型別包括binary、varbinary、bit、tinyblob、blob、mediumblob和longblob等。

mysql的二進位制型別如下表所示:

整數型別

取值範圍

binary(m)

位元組數為m位元組,允許長度為0~m的固定長度二進位制字串

varbinary(m)

允許長度為0~m位元組的可變長度二進位制字串,位元組數為值的長度加1

bit(m)

m位二進位制資料,m最大值為64位

tinyblob

可變長度二進位制資料,最多255個位元組

blob

可變長度二進位制資料,最多65535(216-1)個位元組

mediumblob

可變長度二進位制資料,最多16777215(224-1)個位元組

longblob

可變長度二進位制資料,最多4294967295或4gb(232-1)個位元組

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型別實際占用的空間為實際長度加1。這樣,可以有效的節約系統的空間。

1. 建立資料表table14,定義binary(3)型別的字段b和varbinary(30)型別的字段vb。如下圖所示:

2. 向資料表中插入資料'5'。如下圖所示:

3. 檢視兩個字段儲存資料的長度。sql**如下:

select length(b),length(vb) from table14;
如下圖所示:

從上圖中**執行的結果可以看出,b欄位的值資料長度為3,而vb欄位的值資料長度僅為插入的乙個字元的長度1。

4. 下面進一步確認'5'在兩個欄位中不同的儲存方式。sql語句**如下:

select b,vb,b='5',b='5\0\0',vb='5',vb='5\0\0' from table14;
如下圖所示:

從上圖中**執行的結果可以看出,b欄位和vb欄位的長度是截然不同的,因為b欄位不足的空間填充了'\0',而vb欄位則沒有填充。

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)來將值轉換為二進位制顯示。

1. 建立資料表table15,定義bit(4)型別的字段b。如下圖所示:

2. 向資料表中插入資料2、9、15、16。如下圖所示:

3. 查詢插入結果。如下圖所示:

b+0表示將二進位制的結果轉換為對應的數字的值,bin()函式將數字轉換為二進位制。從結果可以看出,成功的將四個數插入到表中了。

插入值16的二進位制值為10000,在插入之後mysql將值裁剪到指定範圍的相應端點,在這裡,指定bit為4位,因此相應的端點值為1111,並且mysql儲存裁剪好的值。雖然預設情況下,mysql可以插入超出該列允許範圍的值,但是需要對資料進行裁剪,因而插入的資料可能是不正確的,所以要確保插入的值在指定的範圍內。

blob型別是一種特殊的二進位制型別。blob可以用來儲存資料量很大的二進位制資料,如等。blob型別包括tinyblob、blob、mediumblob和longblob。這幾種blob型別最大的區別就是能夠儲存的最大長度不同。longblob的長度最大,tinyblob的長度最小。

blob型別與text型別很類似,不同點在於blob型別用於儲存二進位制資料,blob型別資料是根據其二進位制編碼進行比較和排序,而text型別是文字模式進行比較和排序的。

blob列沒有字符集,並且排序和比較基於列值位元組的數值;text列有乙個字符集,並且根據字符集對值進行排序和比較。

blob型別主要用於儲存、pdf文件等二進位制檔案。通常情況下,可以將、pdf文件等都儲存在檔案系統中,然後在資料庫中儲存這些檔案的路徑。

mysql 大二進位制型別 MySql 二進位制型別

mysql二進位制型別 二進位制型別是在資料庫中儲存二進位制資料的資料型別。二進位制型別包括binary varbinary bit tinyblob blob mediumblob和longblob等。mysql的二進位制型別如下表所示 整數型別 取值範圍 binary m 位元組數為m位元組,允...

mysql二進位制 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗,你可以...

mysql二進位制恢復 mysql二進位制日誌恢復

二進位制日誌匯出 1.按時間節點匯出 no defaults 用來對mysql5.5之前mysqlbinlog命令報錯 mysqlbinlog no defaults start date 2017 08 08 15 04 04 stop date 2017 08 08 15 12 00 progr...