注: 当创建了主外键关系后,如果在外键表中有任何记录引用了主键表中的某条记录,则在主键表中不能删除该记录。同时主键表也不能删除。
demo:
--============手动增加约束==========
--手动删除一列(删除EmpAddress列)
alter table Employees drop column EmpAddress
--手动增加一列(增加一列EmpAddr varchar(1000))
alter table Employees add AA varchar(500), BB int, CC varchar(10)--增加多列
--手动修改一下EmpEmail的数据类型(varchar(200))
alter table Employees alter column EmpAddr varchar(1000)
--为EmpId增加一个主键约束
alter table Employees add constraint PK_EmpId primary key(EmpId)
--非空约束,为EmpName增加一个非空约束
alter table Employees alter column EmpName varchar(50) not null
--为EmpName增加一个唯一约束
alter table Employees add constraint UQ_EmpName unique (EmpName)
--为性别增加一个默认约束,默认为'男'
altert able Employees add constraint DF_EmpGender default('男') for EmpGender
--为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。
alter table Employees add constraint CK_EmpAge check (EmpAge>=0andEmpAge<=120)
--创建一个部门表,然后为Employee表增加一个DepId列。
alter table Employees add DeptId int
--增加外键约束
alter table Employees add constraint FK_DeptId_DepId foreign key(DeptId) references Department(DepId)
--添加主键约束
alter table Score
add constraint PK_Score primary key(sId)
--添加唯一约束
alter table student
add constraint UQ_student unique(sNo)
--添加默认约束
alter table student
add constraint DF_student default('男') for sSex
--添加检查约束
alter table student
add constraint CK_student check (sAge>=18 and sAge<=100)
--添加外键约束(主键表Class外键表student)
alter table student
add constraint FK_student
foreign key (sClassId) references Class (cId) --外键student表中的sClassId来references引用主键表中的cid
--级联删除
--on delete cascade on update cascade
--删除约束
alter table student
drop constraint FK_student
--用一条语句为表增加多个约束。
altertable Employees add
constraint PK_Employees_EmpIdprimary key(EmpId),--增加主键约束
constraint UQ_Employees_EmpName unique(EmpName),--增加唯一约束
constraint DF_Employees_EmpGender default('女') for EmpGender,--默认约束
constraint CK_Employees_EmpAge check(EmpAge>=0and EmpAge<=120),
constraint FK_Employees_Department_DepId foreign key(DepId) references Department(DepId)
altertable Employees drop constraint
CK_Employees_EmpAge,
FK_Employees_DepId
====================================================================================================
通过使用级联引用完整性约束,您可以定义当用户试图删除或更新现有外键指向的键时,SQLServer 2005 执行的操作。
CREATE TABLE 语句和 ALTER TABLE 语句的 REFERENCES子句支持 ONDELETE 子句和 ONUPDATE 子句。还可以使用“外键关系”对话框定义级联操作:
[ ON DELETE { NO ACTION |CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION |CASCADE | SET NULL | SET DEFAULT } ]
--删除原有的外键约束
alter table Employees drop constraint FK_Employees_Department_DepId
--设置主外键关系的级联删除
alter table Employees add constraint FK_Employees_Department_DepId
foreign key(DepId) references Department(DepId)
ondelete CASCADE --设置级联删除
onupdate cascade -- 设置级联更新