如果您已经知道只需要某些值,那么最好的解决方案是使用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')
);
使用插入命令在表中插入一些记录-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)
这是TINYINT UNSIGNED的实现。让我们创建一个新表-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)