Mysql 简明教程
MySQL - BIT
在编程语言中,位表示基本数据单元。它只能存储两个值,表示为 0 或 1。
The MySQL BIT Data Type
MySQL BIT 数据类型用于存储指定范围内的二进制值。范围由你分配给 BIT 列的位数决定。
如果我们尝试插入一个整数,而不是 BIT 值,MySQL 会将其自动转换为 BIT 值。我们必须确保要添加的整数必须在可转换为 BIT 值的范围内。
例如,如果你有一个 BIT(3) 列,它可以在二进制中存储从 000 到 111 的值,这在整数格式中对应于 0 到 7。如果你尝试将整数 8 插入此 BIT(3) 列,你将收到一条错误消息,因为 8 在二进制中是 1000,超出此列的有效范围。
Syntax
以下是 MySQL BIT 数据类型语法:
BIT(n)
此处, n 值的范围为 1 到 64。如果你没有提供“n”值,默认值为 1,产生一个单比特 BIT 列。因此,以下查询将产生相同的结果:
Column_name BIT(1);
and
Column_name BIT;
Bit Value Literal
-
若要指定位值文本,可以使用 b’val 或 0bval 符号,其中 val 是仅包含 0 和 1 的二进制值。前面的“b”不区分大小写。
-
请注意,0b 符号区分大小写,因此 0B'1000' 是一个无效的位文本值。
Example
让我们创建一个名为 STUDENTS 的表,并对 AGE 列使用 BIT 数据类型,如下所示 −
CREATE TABLE STUDENTS(
ID int auto_increment,
NAME varchar(40),
AGE BIT(3),
primary key (ID)
);
以下是所获得的输出 −
Query OK, 0 rows affected (0.01 sec)
现在,我们将 AGE 列中的值“5”和“3”插入到 STUDENTS 表中 −
INSERT INTO STUDENTS (NAME, AGE) VALUES
('Varun', 5),
('Akash', 3);
上述查询的输出如下所示:
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
我们可以使用以下查询显示 STUDENTS 表中 AGE 列中插入的值 −
SELECT * from STUDENTS;
我们可以在下面的输出中看到,值“5”和“3”以二进制格式存储 −
现在,让我们插入另一个值“10”。在二进制格式中,“10”表示为“1010”。然而,我们定义的 AGE 列只能达到三个位。因此,以下查询将生成一个错误,因为值 10 大于 7 −
INSERT INTO STUDENTS (NAME, AGE) VALUES ('Priya', 10);
输出表明数据对 AGE 列来说太长了。
ERROR 1406 (22001): Data too long for column 'AGE' at row 1
要将位值文字插入到 “AGE” 列中,您可以使用 B’val 表示法。在这里,我们插入的是“110”,它等价于整数值“6”,如下所示 −
INSERT INTO STUDENTS (NAME, AGE) VALUES('Priya', B'110');
获得的结果如下 −
Query OK, 1 row affected (0.01 sec)
让我们使用以下查询显示 “STUDENTS” 表中的所有记录 −
SELECT * from STUDENTS;
我们可以在下面的输出中看到,值“6”已被以二进制格式插入为“0x06” −