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 1mysql> 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)