check约束其实就是一个检查功能,反正就是对输入数据的一个限制,如果不满足限制,那么就无法插入数据。
mysql> create table gender(id int primary key auto_increment,name varchar(20),sex varchar(2),
-> check(sex='男' or sex='女' or sex='秘密'));
Query OK, 0 rows affected (0.04 sec)
mysql> desc gender;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
mysql> insert into gender values(null,'z1','秘密');
Query OK, 1 row affected (0.00 sec)
mysql> insert into gender values(null,'z2','女');
Query OK, 1 row affected (0.00 sec)
mysql> insert into gender values(null,'z3','男');
Query OK, 1 row affected (0.00 sec)
mysql> select * from gender;
+----+------+------+
| id | name | sex |
+----+------+------+
| 1 | z1 | 秘密 |
| 2 | z2 | 女 |
| 3 | z3 | 男 |
+----+------+------+
3 rows in set (0.00 sec)
mysql> insert into gender values(null,'z3','123');
ERROR 1406 (22001): Data too long for column 'sex' at row 1
mysql> insert into gender values(null,'z3','12');
ERROR 3819 (HY000): Check constraint 'gender_chk_1' is violated.
mysql> select * from gender;
+----+------+------+
| id | name | sex |
+----+------+------+
| 1 | z1 | 秘密 |
| 2 | z2 | 女 |
| 3 | z3 | 男 |
+----+------+------+
3 rows in set (0.00 sec)

这篇博客介绍了在MySQL中使用check约束来限制表中`gender`字段的数据输入,只允许'男'、'女'或'秘密'三个选项。通过创建表、描述表、插入合法与非法数据的示例,展示了check约束在实际操作中的应用和其对数据完整性的保障。当尝试插入不符合约束的数据时,系统会返回错误信息。
1342

被折叠的 条评论
为什么被折叠?



