通过代码添加约束
设置约束前先将通过设计器模式添加的约束删除掉,删除方式:1)通过左侧的"对象资源管理器"窗口,在"键"与"约束"文件夹中进行删除 2)通过设计器窗口删除
1 添加一个主键约束
--切换数据库文件
use School;
--1 添加一个主键约束格式
--alter table 表名 add constraint 约束名 primary key(列名)
--为Student表增加一个主键
alter table Student add
constraint PK_Student_SId primary key(SId)
2 添加一个外键约束
--2 添加一个外键约束格式
--用foreign key 表示外键
--用references 主键表(主键)表示关联哪一个表的哪一个列
--alter table 表名 add
--constraint 约束名 foreign key(列名)
--references 关联的表名(关联的列名,一般是主键)
--为Student的 SCId 添加外键约束
alter table Student add
constraint FK_Student_SCId foreign key(SCId)
references Class(CId)
3 添加一个唯一约束
--3 添加一个唯一约束格式
--alter table 表名 add constraint 约束名 unique(列名)
--为Student的 SName 添加唯一约束
alter table Student add
constraint UQ_Student_SName unique(SName)
4 添加一个检查约束
--4 添加一个检查约束格式
--alter table 表名 add
--constraint 约束名 check(表达式)
--为Student的 SAge 添加唯一约束
alter table Student add
constraint CK_Student_SAge check(SAge>=0 and SAge<=120)
5 添加一个默认值约束
--5 添加一个默认值约束格式
--alter table 表名 add
--constraint 约束名 default 默认值 for 列名
--为Student的 SAge 添加默认值约束
alter table Student add
constraint DF_Student_SAge default 20 for SAge
6 添加一个非空约束
--6 添加一个非空约束,其实就是修改列为 not null
--alter table 表名
--alter column 列名 数据类型 null/not null
--为Student的 SName 添加非空约束
alter table Student
alter column SName varchar(48) not null
7 删除指定约束
--删除约束格式
--alter table 表名 drop constraint 约束名
--删除Student的SId 主键约束
alter table Student drop
constraint PK_Student_SId
8 一次添加/删除多个约束
--添加多条约束的格式
alter table 表名 add
constraint 具体约束代码1,
constraint 具体约束代码2,
......
constraint 具体约束代码N,
--添加多条约束
alter table Student add
constraint PK_Student_SId primary key(SId),
constraint FK_Student_SCId foreign key(SCId)
references Class(CId),
constraint UQ_Student_SName unique(SName)
--删除多条约束格式
alter table 表名 drop
constraint 具体约束名,
......
constraint 具体约束名
--删除多条约束
alter table Student drop
constraint PK_Student_SId,
constraint FK_Student_SCId,
constraint UQ_Student_SName
级联删除
级联删除:简单来说删除主键表的一条数据时,引用该条数据主键的外键表中相同外键的数据一同删除
如删除主键表(Class)的主键(班级编号,假设为2)一同删除还有外键表(Student)中的有相同外键(SCId=2)的数据
之前添加的外键约束,删除主键表的数据时会弹出"错误窗口"无法删除,原因在于有主键表引用了外键表的主键
9 添加可以实现级联删除方式
--添加级联删除格式
alter table 外键表 add
constraint 约束名 foreign key(外键)
references 主键表(主键) on delete cascade
--添加级联删除
alter table Student add
constraint FK_Student_Class foreign key(SCId)
references Class(CId) on delete cascade