实验八:数据库的完整性约束

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八:数据库的完整性约束
一、实验目的
1.掌握主键约束、外键约束及及check约束的用法;
2.掌握默认值约束的应用;
3.了解规则、触发器的使用。

二、实验环境
已安装SQL Server 2005 企业版的计算机;
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1.熟悉数据库完整性相关概念及约束;
2.了解约束、默认值及规则;
3.完成实验报告;
五、实验内容及步骤
以系统管理员身份登录到SQL Server服务器,并使用T-SQL语句实现以下操作;
1.请用至少2种方法定义stu数据库中student表的主键sno;
方法一
create table student
(sno char(9)primary key,
sname char(2)not null,
ssex char(2),sage smallint,
sdept char(20))
方法二
create table student
(sno char(9),
sname char(20)not null,
ssex char(2),
sage smallint,
sdept char(20),
primary key(sno))
2.将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk; create table course
(cno char(4),
cname char(40),
cpno char(4),
ccredit smallint,
constraint cno_pk
primary key(cno))
3.为表course中的字段cname添加唯一值约束;
create table course
(cno char(4),
cname char(40)unique,
cpno char(4),
ccredit smallint,
constraint cno_pk
primary key(cno))
4.将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为
sc_pk;
create table sc
(sno char(9)not null,
cno char(4)not null,
cpno char(4),
grade smallint,
constraint sc_pk
primary key(sno,cno))
5.对于数据表sc的sno、cno字段定义为外码,使之与表student的主码
sno及表course的主码cno对应,实现如下参照完整性:
1)删除student表中记录的同时删除sc表中与该记录sno字段值相同
的记录;
2)修改student表某记录的sno时,若sc表中与该字段值对应的有若
干条记录,则拒绝修改;
3)修改course表cno字段值时,该字段在sc表中的对应值也应修改;
4)删除course表一条记录时,若该字段在在sc表中存在,则删除该
字段对应的记录;
5)向sc表添加记录时,如果该记录的sno字段的值在student中不存
在,则拒绝插入;
USE stu
ALTER TABLE sc
ADD CONSTRAINT sc_fk
FOREIGN KEY(Sno)
REFERENCES student(Sno)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY(Cno)
REFERENCES course(Cno)
ON DELETE CASCADE
ON UPDATE CASCADE
6.定义check约束,要求学生学号sno必须为9位数字字符,且不能以0
开头,第二三位皆为0;
alter table student
add constraint C1 check(sno like'*00?'and sno not like'0?')
7.定义stu数据库中student表中学生年龄值在16-25范围内;
alter table student
add constraint c7 check
(
sage>15 and sage<25
)
8.定义stu数据库中student表中学生姓名长度在2-8之间;
alter table student
add constraint c2 check
(
len(sname)>2 and len(sname)<8
)
9.定义stu数据库中student表中学生性别列中只能输入“男”或“女”;alter table student
add constraint c8 check
(
ssex in('男','女')
)
10.定义stu数据库student表中学生年龄值默认值为20;
create default sage as 20
11.修改student表学生的年龄值约束可以为15-30范围内;
alter table student
add constraint c6 check
(
sage>15 and sage>30
)
12.删除上述唯一值约束、外键约束及check约束;
alter table student
drop constraint c1,c2,c3;
alter table sc
drop constraint c8,c4,c5
13.思考题:定义规则对象,用于保证course表中cno字段值为5个数字字
符;(可选做)
14.思考题:向sc表中插入或修改一条记录时,通过触发器检查记录sno
字段的值在student表中是否存在,若不存在,则取消插入或修改操作;
(可选做)
15.思考题:删除student表中一条记录的同时删除其在sc表中对应的记录;
六、出现问题及解决办法
如:某些操作无法执行,如何解决?。

相关文档
最新文档