MySQL 中的 BIT 和 TINYINT 有什么区别?
mysqlmysqli database
BIT 可用于存储 1 位的值。它可以是 0 或 1。例如,我们不能用 BIT 数据类型存储 2。如果我们尝试用 BIT 数据类型插入 2,MySQL 会引发错误。
TINYINT 可用于存储 8 位的值。我们可以存储的最大值是 127。例如,我们不能用 8 位值存储 987。如果我们尝试用 TINYINT 数据类型插入 987,MySQL 会引发错误。
让我们通过 MySQL 版本 8.0.12 来解决这个问题。
检查系统上安装的版本。
mysql> select version();
以下是输出。
+-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
BIT 类型
创建具有 BIT 类型的表。
mysql> create table BitDemo -> ( -> Id BIT -> ); Query OK, 0 rows affected (0.56 sec)
向表'BitDemo'中插入记录。
mysql> insert into BitDemo values(1); Query OK, 1 row affected (0.13 sec) mysql> insert into BitDemo values(0); Query OK, 1 row affected (0.33 sec)
每当我们将 2 插入 Bit 时,都会出现错误。
mysql> insert into BitDemo values(2); ERROR 1406 (22001): Data too long for column 'Id' at row 1
TINYINT
创建具有 TINYINT 数据类型的表。
mysql> create table TinyIntDemo -> ( -> Id TINYINT -> ); Query OK, 0 rows affected (0.69 sec)
插入记录。
mysql> insert into TinyIntDemo values(123); Query OK, 1 row affected (0.17 sec) mysql> insert into TinyIntDemo values(97); Query OK, 1 row affected (0.15 sec) mysql> insert into TinyIntDemo values(127); Query OK, 1 row affected (0.16 sec)
每当我们尝试插入超过 127 的值时,我们都会收到错误。
mysql> insert into TinyIntDemo values(9876); ERROR 1264 (22003): Out of range value for column 'Id' at row 1 mysql> insert into TinyIntDemo values(987); ERROR 1264 (22003): Out of range value for column 'Id' at row mysql> insert into TinyIntDemo values(255); ERROR 1264 (22003): Out of range value for column 'Id' at row 1 mysql> insert into TinyIntDemo values(254); ERROR 1264 (22003): Out of range value for column 'Id' at row 1 mysql> insert into TinyIntDemo values(200); ERROR 1264 (22003): Out of range value for column 'Id' at row 1 mysql> insert into TinyIntDemo values(199); ERROR 1264 (22003): Out of range value for column 'Id' at row 1
我们可以存储的最大值是 127。
要显示所有有效插入的记录,让我们使用 SELECT 命令。
mysql> select *from TinyIntDemo;
这是输出。
+------+ | Id | +------+ | 123 | | 97 | | 127 | +------+ 3 rows in set (0.00 sec)