数据库应用- 数据完整性实验答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 数据完整性
1.实验目的
(1)掌握Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。(2)掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_helptext查询规则信息、sp_rename更名规则的方法。
(3)掌握Transact-SQL语句(CREATE DEFAULT、DROP DEFAULT)创建和删除默认对象的方法。
(4)掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询默认对象信息。
(5)掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。
2.实验内容及步骤
请先附加studentsdb数据库,然后完成以下实验。
(1)主要讲解规则
为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。
①.复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为'电
话号码' CHAR(7)。完成以下代码实现该操作。
stu_phone表结构如图1-10所示。
答:SELECT*INTO stu_phone FROM student_info
ALTER TABLE stu_phone ADD电话号码CHAR(7)NULL
创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。实现该规则的代码为答:create rule phone_rule
as@电话号码like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
②.使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话
号码”列上。实现该操作的代码为
答:sp_bindrule phone_rule,'stu_phone.电话号码'
③.输入以下代码,进行一次插入操作,要求符合规则:
--select * from stu_phone
--INSERT INTO stu_phone(学号,姓名,电话号码) VALUES('0009','王国强
','1234yyy')
答:INSERT INTO stu_phone(学号,姓名,电话号码)VALUES('0009','王国强','1234yyy')
④.使用系统存储过程sp_unbindrule解除stu_phone表的'电话号码'列phone_rule
规则绑定
答:
⑤.DROP RULE 删除规则phone_rule
答:exe sp_unbindrule’stu_phone.性别’
Drop rule stu_S_rule
(2)如下图,在管理台建各表的主、外键,同时对成绩表中的学号,课程号建级联更新和级联删除。
请截图
①.为成绩表的创建外键,如下图
②.成绩表的学号、课程号级联更新和级联删除的创建图
图 1
图 2
图 3
以下各题,请参照上图2与图3
课程号外键截图
答:
学号外键截图
答:
学号级联更新、级联删除图
答:
课程号级联更新、级联删除图
答:
(3)、数据其它约束
①.创建一个表Employees5,只含EmployeeID,Name,Sex和Education列。将Name设
为主键,作为列Name的约束。对EmployeeID列进行unique约束,并作为表的约束
create table Employees5
(EmployeeID char(6)not null,
Name char(10)not null primary key,
Sex tinyint,
Education char(4),
constraint UK_id unique(EmployeeID)
)
②.删除上题中的创建unique约束
alter table Employees5
drop constraint UK_id
③.创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女
create table student
(号码char(6)not null,
性别char(2)not null
check(性别in('男','女'))
)
创建新表Salary2,结构与Salary相同,但Salary2表不允许OutCome列大于InCome列create table Salary2
(EmployeeID char(6)not null,
InCome float not null,
OutCome float not null,
check(InCome>=OutCome)
)
④.
⑤.创建一个表Salary3,要求所有Salary3表上EmployeeID列的值都要出现在Salary2表中,
利用参照完整性约束实现,要求当删除或修改Salary2表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化
create table Salary3
(
EmployeeID char(6)not null primary key,
InCome float not null,
OutCome float(8)not null,
foreign key(EmployeeID)
references Salary(EmployeeID)
on update cascade
on delete cascade
)