数据库的完整性约束
实验五:数据库的完整性约束
淘宝店号530213 一、实验目的
1. 掌握主键约束、外键约束及及check约束的用法,
2. 掌握默认值约束的应用,
3. 了解规则、触发器的使用。
二、实验环境
已安装SQL Server 2005 企业版的计算机,
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1. 熟悉数据库完整性相关概念及约束,
2. 了解约束、默认值及规则,
完成实验报告, 3.
4. 记住淘宝店号530213
五、实验内容及步骤
-SQL语句实现以下操作, 以系统管理员身份登录到SQL Server服务器~并使用T
1. 请用至少2种方法定义stu数据库中student表的主键sno,
create table student(
sno char(9) primary key,
sname char(8) ,
ssex char(2),
sage int,
sdept char(2)
)
create table student
(sno char(9) ,
sname char(8) ,
ssex char(2),
sage int,
sdept char(2)
primary key (sno)
)
2. 为表course中的字段cname添加唯一值约束, create table course(
cno char(4) primary key,
cname char(16)
constraint c1 unique,
Credit int)
3. 将数据库stu的表sc的sno及cno字段组合定义为主键~约束名称为
sc_pk;
create table sc(
sno char(9) ,
cno char(4),
grade int check(grade<=100 and grade>=0)
constraint sc_pk primary key(sno,cno)
)
4. 对于数据表sc的sno、cno字段定义为外码~使之与表student的主码
sno及表course的主码cno对应~实现如下参照完整性:
1) 删除student表中
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
的同时删除sc表中与该记录sno字段值相同
的记录,
2) 修改student表某记录的sno时~若sc表中与该字段值对应的有若
干条记录~则拒绝修改,
修改course表cno字段值时~该字段在sc表中的对应值也应修改, 3)
4) 删除course表一条记录时~若该字段在在sc表中存在~则删除该
字段对应的记录,
5) 向sc表添加记录时~如果该记录的sno字段的值在student中不存
在~则拒绝插入,
create table sc(
sno char(9) ,
cno char(4),
grade int check(grade<=100 and grade>=0),
constraint c3 primary key(sno,cno),
constraint c4 FOREIGN key(sno) references student(sno),
constraint c5 FOREIGN key(cno) references course(cno)
);
5. [选作]定义check约束~要求学生学号sno必须为9位数字字符~且不
能以0开头~第二三位皆为0,
6. 定义stu数据库中student表中学生年龄值在16-25范围内,
7. 定义stu数据库中student表中学生姓名长度在2-8之间,
8. 定义stu数据库中student表中学生性别列中只能输入“男”或“女”,
sname char(8) check(len(sname)>2 and len(sname)<8),
ssex char(2) char(ssex in('男','女')),
sage int constraint c2 check(sage between 16 and 25),
9. 定义stu数据库student表中学生年龄值默认值为20,
sage int default 20,
10. 修改student表学生的年龄值约束可以为15-30范围内, 先删后增
alter table student
drop constraint c2;
alter table student
add constraint c2 check(sage between 15 and 30),
11. 删除上述唯一值约束、外键约束及check约束, alter table course
drop constraint c1;
alter table sc
drop constraint c4,c5;