数据库11.9作业
--2、实验内容
--2.1 掌握实体完整性约束的创建和使用方法
--(1)创建表时定义由一个属性组成的主键(给约束命名)。
create table s
(
sname char(8) not null,
constraint PK_sname primary key(sname)
)
--(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。
create table s2
(
sname char(8) not null,
cid char(8) not null,
constraint PK_s_c primary key(sname,cid)
)
--(3)然后插入和更新数据,观察违反实体完整性约束的情况。
--2.2 掌握参照完整性约束的创建和使用方法
--(4)创建表时定义一个列级参照完整性约束(给约束命名)。
create table s3
(
sname char(8) not null constraint FK_sn foreign key references s(sname)
)
--(5)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。
create table s4
(
sname char(8) not null,
cid char(8) not null,
constraint PK_sc primary key (sname,cid),
constraint FK_sc foreign key (sname,cid)references s2(sname,cid)
)
--(6)设计数据更新语句检查参照完整性约束是否起作用。
update s4 set sname='aa'
--(7)设计数据插入或者更新语句检查参照完整性约束及其相应的级联动作是否起作用。
--ON UPDATE CASCADE
--ON DELETE CASCADE
--ON DELETE SET NULL
--设置在被参照表中
insert into s2 values('aa','0001')
insert into s2 values('bb','0002')
insert into s4 values('aa','0002')
--2.3掌握用户自定完整性约束的创建和使用方法
--(8)定义一个检查约束,检查其值在某个取值范围内,
--并设计相应的更新语句检查该约束是否起作用?
alter table s add check(sname>'aa' and sname<'cc')
insert into s values('bb')
update s set sname='ab'
--(9)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),
--并设计相应的更新语句检查该约束是否起作用?
alter table s2 add check(cid like'000%')
insert into s2 values('aa','0002')
insert into s2 values('aa','0012')
--(10)定义一个检查非空约束,并设计相应的插入或者更新语句检查该约束是否起作用?
alter table s2 add born char(8)
alter table s2 add check(born is not null)
select *from s2
insert into s2 values('ac','0004',null)
insert into s2 values('ac','0004','6.18')
--(14)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?
alter table s2 add unique(sname)
insert into s2 values('ac','0005','6.18')
--违反了 UNIQUE KEY 约束 'UQ__s2__0F1ED5835BE2A6F2'。不能在对象 'dbo.s2' 中插入重复键。
--(15)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。
alter table s2 add constraint DF_b default'9.1' for born
insert into s2 values('ae','0006',null)
--3 实验要求
--(1)深入复习教材第五章数据库完整性约束内容。
--(2)针对studentmanager数据库模式设计各种完整性约束,
--每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,
--设计和运行触发完整性约束检查的数据更新语句。