MySQL BIT数据类型

MySQL BIT数据类型

BIT是MySQL中使用的数据类型,允许我们存储位值。位值的范围为1-64。它只能存储0和1的值。如果我们存储一个值为2的位值,将返回错误消息。通常,我们可以使用create table或定义语句来定义位值。

语法:

以下是在MySQL中定义位数据类型的语法:

BIT (M);

这里,关键字 BIT 代表二进制值的存储,其值在变量 M 中提到。变量M的值可以在1-64的范围内。如果我们没有指定M的任何值,则其默认值为1。因此,下面的语句是等价的:

column_name BIT(1);
OR 
column_name BIT;

如果我们想要指定位值文字,我们可以使用 b’value’0bvalue符号 。在这种记法中,该值表示一个二进制值,只能用零和一来表示。例如,b’111’和b’10000000’分别表示7和128。

位值文字的默认字符集是二进制字符串。请参见以下语句:

mysql> SELECT CHARSET(B'); -- binary

MySQL BIT示例

让我们通过一个示例来了解MySQL中BIT的概念。首先,我们将创建一个名为 my_calendars 的新表,该表包含 ‘days’ 列的BIT(7)。请参见下面的语句:

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;

我们应该得到以下输出:

MySQL BIT数据类型

我们可以看到,检索到的结果并没有按照我们期望的格式显示数据。因此,我们将使用 BIN()函数 以二进制形式检索数据。为此,我们需要明确地将列“days”作为BIN()函数调用。

mysql> SELECT years, weeks, BIN(days) FROM my_calendars;

执行后,我们将以我们期望的方式获得输出。

MySQL BIT数据类型

如果我们在一个M位长的位列中插入一个长度不足M位的值,MySQL会自动在指定的位值左边添加零。假设第三周的第1天休息;我们可以将01111100插入到“days”列中。请参见下面的语句:

mysql> INSERT INTO my_calendars (years, weeks, days) 
VALUES(2020, 1, B'111100');

经验证数据后,您可以看到它的运行完美。

MySQL BIT数据类型

我们可以看到,检索到的输出在返回结果之前移除了前导零。因此,我们将使用 LPAD() 函数正确检索数据:

mysql> SELECT years, weeks, LPAD (BIN(days), 7, '0') FROM my_calendars;

查看下面的输出:

MySQL BIT数据类型

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数据类型。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程