MySQL Bit类型
BIT 是 MySQL 中使用的一种数据类型,它允许我们存储位值。位值在1-64 范围内。它只会在 0 和 1 中存储值。如果我们存储像 2 这样的位值,它将返回错误消息。一般我们可以用create table或者定义语句来定义bit值。
一、MySQL Bit类型 语法
以下是在 MySQL 中定义位数据类型的语法:
BIT(M);
这里,关键字 BIT 代表二进制值的存储,它的值在变量M中提到。M 的值可以在 1-64 的范围内。如果我们没有指定 M 的任何值,则它包含默认值为 1。因此,以下语句是等价的:
column_name BIT(1);
OR
column_name BIT;
如果我们想指定位值文字,我们可以使用b'value'或0bvalue 表示法。在这种表示法中,该值表示只能写入0和1的二进制值。例如,b'111' 和 b'10000000' 分别代表 7 和 128。
位值字面量的默认字符集是二进制字符串。请参阅以下声明:
mysql> SELECT CHARSET(B'); -- binary
二、MySQL Bit类型 示例
让我们通过一个例子来理解MySQL中 BIT 的概念。首先,我们将创建一个名为my_calendars的新表,其中包含 BIT(7) 形式的“days”列。请参阅以下声明:
CREATE TABLE my_calendars(
years INT,
weeks INT,
days BIT(7),
PRIMARY KEY(years, weeks)
);
“days”列值指示是工作日还是休息日。这里1代表工作日,0代表休息日。
假设2020 年一周的周六和周日不是工作日。在这种情况下,我们可以在 my_calendars 表中插入一条记录,如下所示:
mysql> INSERT INTO my_calendars (years, weeks, days)
VALUES(2020, 2, B'1111100');
接下来,执行以下查询以从 my_calendar 表中检索数据:
mysql> SELECT * FROM my_calendars;
我们应该得到如下输出:
我们可以看到检索到的结果没有以我们想要的格式显示数据。因此,我们将使用BIN() 函数以二进制形式检索数据。为此,我们需要专门将“days”列称为 BIN()。
mysql> SELECT years, weeks, BIN(days) FROM my_calendars;
执行后,我们将以我们想要的方式获得输出。
如果我们在小于 M 位长度的位列中插入一个值,MySQL 会自动在指定位值的左侧添加零。假设第三周的第一天休息;我们可以将 01111100 插入“days”列。请参阅以下声明:
mysql> INSERT INTO my_calendars (years, weeks, days)
VALUES(2020, 1, B'111100');
验证数据后,您可以看到它完美运行。
我们可以看到检索到的输出在返回结果之前删除了前导零。因此,我们将使用LPAD()函数来正确检索数据:
mysql> SELECT years, weeks, LPAD (BIN(days), 7, '0') FROM my_calendars;
请参阅以下输出:
三、BIT 和 TINYINT 的区别
BIT 和 TINYINT 在 MySQL 中都有不同的用法。
BIT 数据类型用于存储1位的值,可以是 0 或 1。它存储的值在 1 到 64 的范围内。如果我们尝试在 BIT 列中插入其他值(例如,2), MySQL 发出错误。相比之下,TINYINT 数据类型用于存储 8 位的整数值。它存储-128 到+127 或0 到256 范围内的值,占用1 个字节。如果我们尝试在 TINYINT 列中插入其他值(例如,987),MySQL 会发出错误。
在本文中,我们学习了如何在 MySQL 表中使用和存储 BIT 数据类型。
热门文章
优秀文章