实验名称 实验五 完整性
一、实验目的:
1、掌握数据库约束的概念;
2、熟悉SQL SERVER 的完整性约束技术。
3、了解SQL SERVER 的违反完整性处理措施。
二、实验准备
1、了解数据库完整性约束的基本概述
2、了解SQL Server完整性约束技术。 包括实体完整性、参照完整性、用户定义完整性等。
3、了解主键(PRIMARY KEY)约束
4、了解外键(FOREIGN KEY)约束
5、了解唯一性(UNIQUE)约束
6、了解检查(CHECK)约束
7、了解DEFAULT 约束
8、了解允许空值约束
9、了解触发器的使用
二、实验内容:
1. 在前几次实验所使用的数据库中新建一个教师信息表,表名为Teacher,字段包括Tno(教师编号),Tname(姓名),Tsex(性别),Ttitle(职称),完整性包括:设定Tno为主键,Tname非空,Tsex的取值范围为“男”或“女”。
CREATE TABLE Teacher
(Tno CHAR(9) PRIMARY KEY,
Tname CHAR(20) NOT NULL,
Tsex CHAR(2) CHECK(Tsex IN ('男','女')),
Ttitle char(10),
);
2. 用insert语句插入如下记录,观察实验结果:
insert into Teacher values('2016001','王明','男','讲师')
insert into Teacher values('2016001','王英','女','助教')
insert into Teacher values('2016002','张方','a','讲师')
级别14,状态1,第2 行
违反了PRIMARY KEY 约束'PK__Teacher__0AD2A005'。不能在对象'dbo.Teacher' 中插入重复键。
语句已终止。
级别16,状态0,第3 行
INSERT 语句与CHECK 约束"CK__Teacher__Tsex__0BC6C43E"冲突。该冲突发生于数据库"sql",表"dbo.Teacher", column 'Tsex'。
语句已终止。
3.对Teacher表增加一个约束,Ttitle属性的取值范围为('助教','讲师','副教授','教授'),并插入一条记录:
insert into Teacher values('2016003','刘阳','男','研究员'),观察实验结果。
INSERT 语句与 CHECK 约束"CK__Teacher__Ttitle__108B795B"冲突。该冲突发生于数据库"sql",表"dbo.Teacher", column 'Ttitle'。
语句已终止。
4.为学生表Student增加一个约束,Ssex的取值范围为“男”或“女”。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2) CHECK(Ssex IN ('男','女')),
Sage SMALLINT,
Sdept CHAR(20)
);
5.为选课表Sc增加一个约束,Grade的取值在0至100之间。
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT check(grade>=0 and grade<=100),
PRIMARY KEY (Sno,Cno))