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)
相关文章
有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

