攀枝花学院数据库完整性约束数据库实验2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攀枝花学院
Panzhihua University
实验报告册
实验二
数据库完整性约束实验
2013 ~2014 学年度第2 学期
课程名称数据库原理与应用授课教师刘继光
教师职务副教授
学生姓名
学号
教学单位数学与计算机学院
课题(项目)名称: 数据库完整性约束实验计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□
授课日期: 年月日第周星期第节
实验二
实验名称:数据库完整性约束实验
实验学时:2
实验目的:
数据库完整性是保证数据库中数据正确性的重要手段,通过实验,使学生加深对数据库完整性的基本概念的理解与掌握,并能够熟练创建、修改、删除各类完整性约束,从而达到灵活应用的目的。
实体完整性约束验证;
引用完整性验证;
唯一约束;
非空约束;
缺省值;
检查约束;
实验内容及要求:
一、数据库完整性约束试验。
试验所使用的数据库表结构如下:
Student(学生记录表)
SNO(学号) CHAR(10) PRIMARY KEY
SNAME(姓名) VARCHAR(16)
SEX(性别) VARCHAR(2)
DEPT(专业号) VARCHAR()
AGE(年龄) SMALLINT
Course(课程表)
CNO(课程号) CHAR(4) PRIMARY KEY
CNAME(课程名) VARCHAR(32)
SCORE(学分) SMALLINT
SC(学生选课成绩表)
SNO(学号) CHAR(7) PRIMARY KEY
CNO(课程号) CHAR(4) PRIMARY KEY
GRADE(成绩) INT
使用查询分析器,建立数据库SC,数据库参数默认。
建立Student、Course、SC数据库表,并完成下面题目:
1、“课程名”属性必须取唯一值。
2、“课程名”也不能取空值。
3、“学分”属性只能取值{1,2,3,4},如果没有输入学分信息,学分的缺省值为3。
4、“学号”的前两位为“20”,第三位与第四位为数字。
5、“GRADE”大于等于0并且小于等于100。
6、SC中,SNO、CNO为外键,请建立外键约束。
create table student
(
sno char(10) primary key,
sname varchar(16),
sex varchar(2),
dept varchar(20),
age smallint
)
create table course
(
cno char(4) primary key,
cname varchar(32) not null,
score smallint not null
)
create table sc
(
sno char(10) primary key,
cno char(4) ,
grade int check (grade >= 0 and grade <= 100),
)
1、“课程名”属性必须取唯一值。
法一 alter table course add unique(cname)
或者 alter table course add constraint un unique(cname)
2、“课程名”也不能取空值。
alter table course alter column cname varchar(32) not null
3、“学分”属性只能取值{1,2,3,4},如果没有输入学分信息,学分的缺省值为3。
法一 alter table course add constraint re check (score in (1, 2, 3, 4)) alter table course add default 3 for score
法二 drop table course
create table course
(
cno char(4) primary key,
cname varchar(32) not null,
score smallint not null default 3 check (score in (1,2,3,4))
)
法三 drop table course
create table course
(
cno char(4) primary key,
cname varchar(32) not null,
score smallint check (score >= 1 and score <= 4) default 3
)
4、“学号”的前两位为“20”,第三位与第四位为数字。
法一alter table student add constraint chk_sno check (sno like '20[1-9][1-9]%')
法二alter table Student add constraint xxx check ((left(SNO,2)='20'))
或者create table student
(
SNO CHAR (10) PRIMARY KEY check (left(sno, 8) = '20073210'),
SNAME VARCHAR(16) not null,
SEX VARCHAR(2) not null,
DEPT VARCHAR(16) not null,
AGE SMALLINT not null
)
5、“GRADE”大于等于0并且小于等于100。
法一 alter table sc add constraint mk check(grade>=0 and grade<=100)
法二 drop table sc
create table sc
(
sno char(10) primary key,
cno char(4) ,
grade int check (grade >= 0 and grade <= 100),
)
6、SC中,SNO、CNO为外键,请建立外键约束。
alter table sc add constraint s foreign key(sno) references student(sno)
alter table sc add constraint a foreign key (cno) references course(cno)
(创表的情况见书85页)
二、思考与练习。
1.外键约束约束有何作用?外键取值有何要求?
外键是表中的一个列,其值必须在另一个表的主键中列出。
外键主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联行的行。
2.实体完整性通过什么机制保证?
实体完整性要求每一个表中的主键字段都不能为空或者重复的值。
实体完整性指表中行的完整性。
要求表中的所有行都有唯一的标识符,称为主关键字。
主关键字是否可以修改,或整个列是否可以被删除,取决于主关键字与其他表之间要求的完整性。
3.唯一性约束与主键有何区别?
对一个表来说主键只能一个,且字段不能为空,但唯一性约束可以有好几个,允许字段为空
4.SQL Server中唯一性约束通过什么机制保证?
实验报告要求:
1.实验目的
2.实验内容及步骤
3.实验习题的源程序清单
4.写出在实验过程中遇到的问题及解决方法
5.要求字迹端正、条理清晰、概念正确。