约束的概念:确保在列中插入有效的值并维护表之间的关系
约束的类型:
default Insert时为列指定值
check 指定在列中可接受的值
Not Null 指定在列中不接受的空值
Primary key 每行唯一的标识
unique 不允许哟偶重复的关键字
foregin 匹配另一张表中的关键字
Primary key(主键) 约束
一个表中只能有一个,不能有空值,不能有重复值
创建表时定义约束:
字段名 数据类型[长度] Primary key
unique (唯一)约束
同一列中的两行不能有相同的值
字段名 数据类型 unique
default(默认)约束
执行insert语句时将默认值自动插入约束所在的列
字段名 数据类型 dafault 默认值
Default 约束注意事项
1,没列只能定义一个default约束
2,不能有Identity属性的列 (自动增长列)
3,如果定义的默认值长度大于对应字段的长度则输入的值将被截断
4,有default约束的字段,可插入其他的值,若不插入,则以默认值为记录值
check(检查)约束
每次执行insert/update 语句时,该约束要检查数据的合法性
字段名 数据类型 check(条件)
注意事项
1,一个表中可以定义多个检查约束,但每个字段只能定义一个检查约束
2,如果对已有的数据的表添加约束,可以用 with nocheck 避免对以前的数据做检查
Foregin key(外键)约束
确保主关键字(主表中)和外关键字(辅表中)的关系
字段名 数据类型 foregin key (字段名) references 表名(字段名)
修改约束
alter table 表名
add constraint 约束名 primary key(字段名) -----主键
............................. unique(字段名)-----唯一
.............................. default(默认值) for 字段名 ---默认
.............................. check(条件) ---检查
............................... foreign key(字段名) references 主键表(参照字段名)-----外键
删除约束
alter table 表名 drop 约束名
要删除被约束的列必须先删除约束
级联更新和删除
设置了外键约束后,如果要插入数据必须先插入主表数据,在插入外键表数据,如果删除数据,先删外键表数据再删除主键表数据
功能:对主键表中的数据记录进行删除或更新时,外键表中的对应记录也跟着删除或更新
语法:
级联删除 on delete cascade
级联更新 on update cascade
例如:
alter table XS_KC
add constraint fk_xh foreign key(学号) references xs(学号) on delete cascade
Rule 规则的使用
指定列中可以接受的值,确保数据落在指定的范围,相当于check约束
语法:
create rule 规则名称 as 规则条件