
用来给列加注释,最多255个字符,注释会保存到数据字典中
id int not null primary key
comment '学号'select column_name,column_comment
from information_schema.columns
where table_name=’stu_comment’
用几个列来进行唯一标识一行
constraint pk_id_name primary_key(id,name)constraint可以给键进行重命名,但是在数据字典中,主键名还是显示primary
参照完整性约束,保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或者是两个表的两个字段之间的参照关系
具有外键约束的列的值不能随便给,必须满足外键所引用的主键的取值
一张表中可以定义多个外键
外键列默认可以给null值
外键所在的表叫做子表,从表
外键所引用的主键所在的表叫做父表,主表
constraint emp_deptid_fk foreign_key(deptid)
references dept(deptid)当删除父表中的行时,如果子表中有依赖被删除的父行的子行存在,那么就不允许删除,并抛出异常(默认对外键使用on delete restrict或on delete no action选项)
在定义外键约束时,可以通过使用on delete cascade或on delete set null来改变外加的默认删除规则
on delete cascade:级联删除,当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么联通子行一起删除,相当于rm -f
on delete set null:当删除父表中的行时,如果子表中有依赖于被删除的父行的子行存在,那么不删除,而是将子行的外键设置为null
reference_definition:
REFERENCES tbl_name (index_col_name,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTIONMySQl中可以使用check约束,但是check约束对数据验证没有任何作用。
Oracle中国可以使用check约束,有相应作用
mysql> create table test_ck(
-> id int check(id>0)
-> );
mysql> insert into test_ck values(-100);
mysql> select * from test_ck;
+------+
| id |
+------+
| -100 |
+------+也可以使用ENUM和set来变通地实现check约束,ENUM只能选一个值,SET可以选择多个值