mysql 大二进制类型_MySql 二进制类型

MySQL二进制类型

二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括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类型

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。如下图所示:

4362.gif

2. 向数据表中插入数据'5'。如下图所示:

4361.gif

3. 查看两个字段存储数据的长度。SQL代码如下:

SELECT length(b),length(vb) FROM table14;

如下图所示:

4360.gif

从上图中代码执行的结果可以看出,b字段的值数据长度为3,而vb字段的值数据长度仅为插入的一个字符的长度1。

4. 下面进一步确认'5'在两个字段中不同的存储方式。SQL语句代码如下:

SELECT b,vb,b='5',b='5\0\0',vb='5',vb='5\0\0' FROM table14;

如下图所示:

4359.gif

从上图中代码执行的结果可以看出,b字段和vb字段的长度是截然不同的,因为b字段不足的空间填充了'\0',而vb字段则没有填充。

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)来将值转换为二进制显示。

实例

1. 创建数据表table15,定义BIT(4)类型的字段b。如下图所示:

4358.gif

2. 向数据表中插入数据2、9、15、16。如下图所示:

4357.gif

3. 查询插入结果。如下图所示:

4356.gif

b+0表示将二进制的结果转换为对应的数字的值,BIN()函数将数字转换为二进制。从结果可以看出,成功的将四个数插入到表中了。

提示

插入值16的二进制值为10000,在插入之后MySQL将值裁剪到指定范围的相应端点,在这里,指定BIT为4位,因此相应的端点值为1111,并且MySQL保存裁剪好的值。虽然默认情况下,MySQL可以插入超出该列允许范围的值,但是需要对数据进行裁剪,因而插入的数据可能是不正确的,所以要确保插入的值在指定的范围内。

BLOB类型

BLOB类型是一种特殊的二进制类型。BLOB可以用来保存数据量很大的二进制数据,如图片等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这几种BLOB类型最大的区别就是能够保存的最大长度不同。LONGBLOB的长度最大,TINYBLOB的长度最小。

BLOB类型与TEXT类型很类似,不同点在于BLOB类型用于存储二进制数据,BLOB类型数据是根据其二进制编码进行比较和排序,而TEXT类型是文本模式进行比较和排序的。

BLOB列没有字符集,并且排序和比较基于列值字节的数值;TEXT列有一个字符集,并且根据字符集对值进行排序和比较。

BLOB类型主要用于存储图片、PDF文档等二进制文件。通常情况下,可以将图片、PDF文档等都保存在文件系统中,然后在数据库中存储这些文件的路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值