《数据库原理与应用》实验七:数据库的完整性约束
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理与应用》实验七:数据库的完整性约束
一、实验目的
1.掌握主键约束、外键约束、唯一约束、默认约束及CHECK约束的用法;
2.掌握默认值约束的应用;
二、实验环境
已安装SQL Server 2008的计算机;
三、实验学时
2学时
四、实验要求
1.熟悉数据库完整性相关概念及约束;
2.了解约束、默认值及规则;
3.完成实验报告;
五、实验内容及步骤
实验1:使用SQL语句完成下列操作
1.将数据库S-T的表Course的Cno字段定义为主键,约束名称为PK_Cno;
alter table Course
add constraint PK_Cno primary key(Cno)
2.为表course中的字段Cname添加唯一值约束, 约束名称为UQ_Cname;
alter table Course
add constraint UQ_Cname unique (Cname)
3.将数据库S-T的表SC的Sno及Cno字段组合定义为主键,约束名称为
PK_SC
alter table SC
add constraint PK_SC primary key (Sno,Cno)
4.对于数据表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中不存
在,则拒绝插入;
alter table SC
add constraint FK_SC
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
go
5.定义默认值约束,要求学生所在系Sdept默认值为“IS”;
alter table Student
add constraint DF_Sdept default('IS') for Sdept
6.定义S-T数据库中Student表中学生年龄值在16-25范围内;
alter table student
add constraint CK_Sage
check(Sage between 16 and 25)
7.定义S-T数据库中Student表中学生姓名长度在2-8之间;
alter table Student
add constraint CK_Sname
check (len(Sname) between 2 and 8)
8.定义S-T数据库中Student表中学生性别列中只能输入“男”或“女”,
默认值为“男”
alter table Student
add constraint CK_Ssex check(Ssex in ('男','女')),
constraint DF_Ssex default('男') for Ssex
9.定义S-T数据库Student表中学生年龄值默认值为20;
alter table Student
add constraint DF_Sage default 20 for Sage
10.修改Student表学生的年龄值约束可以为15-30范围内;
alter table Student
drop constraint CK_Sage
go
alter table Student
add constraint CK_Sage
check(Sage>=15 and Sage<=30)
11..分别向S-T数据库的Student、SC、Course表中插入几条数据,检查约
束效果。
12.删除上述唯一值约束、外键约束及check约束;
alter table Course
drop constraint UQ_Cname
go
alter table SC
drop constraint FK_SC
go
alter table Student
drop constraint CK_Sno,CK_Sname,CK_Ssex
实验2:使用对象资源管理器完成下列操作
1.新建数据库DEMO,并新建两张数据表Student、Specialty
USE master
GO
IF EXISTS(SELECT*FROM sysdatabases WHERE name='Demo')
DROP DATABASE Demo
CREATE DATABASE Demo
ON PRIMARY
(
NAME='Demo_data',
FILENAME='D:\project\Demo_data.mdf',
SIZE=3MB
)
LOG ON
(
NAME='Demo_log',
FILENAME='D:\project\Demo_log.ldf',
SIZE=3MB
)
GO
USE Demo
GO
IF EXISTS(SELECT*FROM sysobjects WHERE name='Student')
DROP TABLE Student
CREATE TABLE Student
(
Sno int NOT NULL,--学号
Sname varchar(20),--学生姓名
Ssex char(2),--性别
Sage int NOT NULL,--学生年龄