MySQL 数据类型 int 与 enum?

mysqlmysqli database更新于 2025/9/5 10:20:17

如果您已经知道只需要部分值,那么最佳解决方案是使用 ENUM 数据类型。ENUM 的限制性更强。

如果您不知道值,则需要使用 TINYINT UNSIGNED 数据类型。TINYINT UNSIGNED 的限制性较低。

如果您只想存储 10、20、30,让我们实现 ENUM 数据类型。以下是查询 −

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Number ENUM('10','20','30')
   );
Query OK, 0 rows affected (0.24 sec)

使用 insert 命令在表中插入一些记录 −

mysql> insert into DemoTable(Number) values('10');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Number) values('20');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Number) values('30');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Number) values('50');
ERROR 1265 (01000): Data truncated for column 'Number' at row 1

使用 select 语句显示表中的所有记录 −

mysql> select *from DemoTable;

这将产生以下输出 −

+----+--------+
| Id | Number |
+----+--------+
|  1 | 10     |
|  2 | 20     |
|  3 | 30     |
+----+--------+
3 rows in set (0.00 sec)

这是 TINYINT UNSIGNED 的实现。让我们创建一个新表 −

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Number tinyint unsigned
   );
Query OK, 0 rows affected (0.23 sec)

使用 insert 命令在表中插入一些记录 −

mysql> insert into DemoTable(Number) values(100);
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Number) values(50);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable(Number) values(60);
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Number) values(70);
Query OK, 1 row affected (0.07 sec)

使用 select 语句显示表中的所有记录 −

mysql> select *from DemoTable;

这将产生以下输出 −

+----+--------+
| Id | Number |
+----+--------+
|  1 |    100 |
|  2 |     50 |
|  3 |     60 |
|  4 |     70 |
+----+--------+
4 rows in set (0.00 sec)

相关文章


有用资源