首页 > 编程笔记 > MySQL笔记 阅读:8

MySQL BINARY和VARBINARY类型的用法(附带实例)

BINARY 和 VARBINARY 都是 MySQL 中的一个二进制字符串类型。MySQL 提供了多种二进制字符串类型,如下表所示。

表:MySQL中的二进制字符串类型
类型名称 说明 存储需求
BIT(M) 位字段类型 大约(M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY(M) 可变长度二进制字符串 M+1 字节
TINYBLOB(M) 非常小的 BLOB L+1 字节,在此 L<2^8
BLOB(M) 小的 BLOB L+2 字节,在此 L<2^16
MEDIUMBLOB(M) 中等大小的 BLOB L+3 字节,在此 L<2^24
LONGBLOB(M) 非常大的 BLOB L+4 字节,在此 L<2^32

BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。其语法格式如下:
列名称 BINARY(M)或者VARBINARY(M)

BINARY 类型的长度是固定的,指定长度之后,如果插入值长度没有达到指定长度,则将在它们右边填充“\0”以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入“a”时,存储的内容实际为“a\0\0”;当插入“ab”时,实际存储的内容为“ab\0”。不管存储的内容是否达到指定的长度,其存储空间均为指定的值 M。

VARBINARY 类型的长度是可变的,指定好长度之后,插入值的长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入值的长度只有 10,则实际存储空间为 10 加 1,即实际占用的空间为字符串的实际长度加 1。

【实例】创建表 tmp13,定义 BINARY(3) 类型的字段 b 和 VARBINARY(3)类型的字段 vb,并向表中插入数据‘5’,比较两个字段的存储空间。
1) 创建表tmp13:
CREATE TABLE tmp13(b binary(3),  vb varbinary(3));

2) 插入数据:
INSERT INTO tmp13 VALUES(5,5);

3) 查看两个字段存储数据的长度:
mysql> SELECT length(b), length(vb) FROM tmp13;
+-----------+---------------+
| length(b) | length(vb)    |
+-----------+---------------+
|       3   |         1     |
+-----------+---------------+
可以看到,b 字段的数据长度为 3,而 vb 字段的数据长度仅为插入的一个字符的长度 1。

相关文章