MySQL数据类型是int还是枚举?
如果您已经知道只需要某些值,那么最好的解决方案是使用ENUM数据类型。ENUM更具限制性。
如果您不知道值,则需要使用TINYINTUNSIGNED数据类型。TINYINTUNSIGNED的限制较少。
如果您只想存储10、20、30,让我们实现ENUM数据类型。以下是查询-
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Number ENUM('10','20','30') );
使用插入命令在表中插入一些记录-
mysql> insert into DemoTable(Number) values('10'); mysql> insert into DemoTable(Number) values('20'); mysql> insert into DemoTable(Number) values('30'); 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)
这是TINYINTUNSIGNED的实现。让我们创建一个新表-
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Number tinyint unsigned );
使用插入命令在表中插入一些记录-
mysql> insert into DemoTable(Number) values(100); mysql> insert into DemoTable(Number) values(50); mysql> insert into DemoTable(Number) values(60); mysql> insert into DemoTable(Number) values(70);
使用select语句显示表中的所有记录-
mysql> select *from DemoTable;
这将产生以下输出-
+----+--------+ | Id | Number | +----+--------+ | 1 | 100 | | 2 | 50 | | 3 | 60 | | 4 | 70 | +----+--------+ 4 rows in set (0.00 sec)