MySQL BIT类型的用法(附带实例)
BIT 是 MySQL 中的一个二进制字符串类型。MySQL 提供了多种二进制字符串类型,如下表所示:
BIT(M) 是位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,则默认为 1。
如果为 BIT(M) 列分配的值的长度小于 M 位,就在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。
BIT 数据类型用来保存位字段值。例如,以二进制的形式保存数据 13(13 的二进制形式为 1101),则需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4),大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。
【实例】创建表 tmp12,定义 BIT(4) 类型的字段 b,向表中插入数据 2、9、15。
1) 创建表 tmp12:
2) 插入数据:
3) 查询插入结果:
类型名称 | 说明 | 存储需求 |
---|---|---|
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 |
BIT(M) 是位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,则默认为 1。
如果为 BIT(M) 列分配的值的长度小于 M 位,就在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。
BIT 数据类型用来保存位字段值。例如,以二进制的形式保存数据 13(13 的二进制形式为 1101),则需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4),大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。
【实例】创建表 tmp12,定义 BIT(4) 类型的字段 b,向表中插入数据 2、9、15。
1) 创建表 tmp12:
CREATE TABLE tmp12( b BIT(4) );
2) 插入数据:
mysql> INSERT INTO tmp12 VALUES(2), (9), (15);
3) 查询插入结果:
mysql> SELECT BIN(b+0) FROM tmp12; +------------+ | BIN(b+0) | +------------+ | 10 | | 1001 | | 1111 | +------------+b+0 表示将二进制的结果转换为对应数字的值,BIN() 函数将数字转换为二进制。从结果中可以看到,成功地将 3 个数插入表中。
默认情况下,MySQL 不可以插入超出该列允许范围的值,因而要确保插入的数据值在指定的范围内。