日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL中的二进制类型

發(fā)布時(shí)間:2025/4/5 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL中的二进制类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1 MySQL中的二進(jìn)制類型
      • 1.1 二進(jìn)制類型概覽
      • 1.2 binary和varbinary類型
      • 1.3 bit類型
      • 1.4 blob類型
      • 1.5 實(shí)戰(zhàn)建議

1 MySQL中的二進(jìn)制類型

1.1 二進(jìn)制類型概覽

二進(jìn)制數(shù)據(jù)和文本數(shù)據(jù)在mysql 中的最大區(qū)別在于:

  • 二進(jìn)制類型存儲(chǔ)原始的二進(jìn)制數(shù)據(jù)(如圖片,視頻,exe文件等)。文本類型(TEXT)用來存儲(chǔ)字符字符串(如由英文字符、中文字符或其它語言字符組成的字符串)。
  • 二進(jìn)制類型沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值。而TEXT類型有字符集,并且根據(jù)字符集的校對(duì)規(guī)則對(duì)值進(jìn)行排序和比較。

二進(jìn)制類型是存儲(chǔ)二進(jìn)制數(shù)據(jù)的數(shù)據(jù)類型,包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。二進(jìn)制類型之間的對(duì)比如下表所示。

1.2 binary和varbinary類型

BINARY類型和VARBINARY類型都是在創(chuàng)建表時(shí)指定最大長(zhǎng)度,其基本形式如下:

  • 類型 (M)

其中,“字符串類型”參數(shù)指定數(shù)據(jù)類型為BINARY類型還是VARBINARY類型;M參數(shù)指定該二進(jìn)制數(shù)的最大字節(jié)長(zhǎng)度為M。這與CHAR類型和VARCHAR類型相似。例如,BINARY(10)就是指數(shù)據(jù)類型為BINARY類型,其最大長(zhǎng)度為10。

BINARY類型的長(zhǎng)度是固定的,最大長(zhǎng)度為255。在創(chuàng)建表時(shí)就指定了,不足最大長(zhǎng)度的空間由″\0″補(bǔ)全。例如,BINARY(50)就是指定BINARY類型的長(zhǎng)度為50。

VARBINARY類型的長(zhǎng)度是可變的,最大長(zhǎng)度為65535。在創(chuàng)建表時(shí)指定了最大的長(zhǎng)度,其長(zhǎng)度可以在0到最大長(zhǎng)度之間,在這個(gè)最大值范圍內(nèi)使用多少就分配多少。

mysql> use test; #選擇數(shù)據(jù)庫(kù)test mysql> create table bin_example(e_bin binary(5),e_varbin varbinary(5)); #創(chuàng)建表 mysql> insert into bin_example values( 'ab','ab'); #插入記錄,可以是普通字符串 mysql> insert into bin_example values( b'0110000101100010',b'0110000101100010'); #插入記錄,可以是二進(jìn)制,與上例等同 mysql> select * from bit_example ; #以十六進(jìn)制的方式顯示

1.3 bit類型

BIT類型在創(chuàng)建表時(shí)指定最大長(zhǎng)度,其基本形式如下:

  • BIT(M)

其中,“M”指定該二進(jìn)制數(shù)的最大存儲(chǔ)長(zhǎng)度為M,M的最大值為64。例如,BIT(4)就是指數(shù)據(jù)類型為BIT類型,長(zhǎng)度為4。若字段的類型BIT(4)存儲(chǔ)的數(shù)據(jù)是0~15,因?yàn)樽兂啥M(jìn)制之后15的值為1111,則其長(zhǎng)度為4。如果插入的值為16,其二進(jìn)制數(shù)為10000,長(zhǎng)度為5,超過了最大長(zhǎng)度,因此大于16的數(shù)是不能插入BIT(4)類型字段中的。

操作要點(diǎn):

  • 插入數(shù)據(jù)時(shí),使用 b’位串’的方式插入相應(yīng)值。
  • 查詢時(shí),可以使用 bin() 、oct() 、hex() 函數(shù)講字段的值轉(zhuǎn)成相應(yīng)的二進(jìn)制、十進(jìn)制和十六進(jìn)制。
mysql> use test; #選擇數(shù)據(jù)庫(kù)test mysql> create table bit_example (b bit(8) ); #創(chuàng)建表 mysql> insert into bit_example values( b'10110111' ); #插入記錄,可以是二進(jìn)制位 mysql> insert into bit_example values( 'a' ); #插入記錄,可以是字符,但不能超出字節(jié)長(zhǎng)度 mysql> select bin(b) from bit_example ; #以二進(jìn)制的方式顯示字段值

1.4 blob類型

  • 以上各類型無須指定長(zhǎng)度!
  • 允許的長(zhǎng)度是指實(shí)際存儲(chǔ)的字節(jié)數(shù),不用考慮字符編碼。
  • 1.5 實(shí)戰(zhàn)建議

    實(shí)戰(zhàn)建議如下:

  • binary長(zhǎng)度固定, 即每條數(shù)據(jù)占用等長(zhǎng)字節(jié)空間;保存長(zhǎng)度不超過255字節(jié)的二進(jìn)制數(shù)據(jù);
  • varbinary可變長(zhǎng)度,可以設(shè)置最大長(zhǎng)度,最大長(zhǎng)度65535;適合用在長(zhǎng)度可變的二進(jìn)制數(shù)據(jù);
  • blob不設(shè)置長(zhǎng)度, 當(dāng)不知道屬性的最大長(zhǎng)度時(shí),適合用blob, 能用varbinary的地方不用blob;
  • 如果都可以選擇,按照查詢速度: binary最快, varbinary次之,blob最慢。

  • 參考資料:

  • C/C++從入門到精通-高級(jí)程序員之路【奇牛學(xué)院】
  • 總結(jié)

    以上是生活随笔為你收集整理的MySQL中的二进制类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。