数据库应用-数据完整性实验答案解析.doc
文本预览下载声明
实验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数据库创建一个规则,限制所输入的数据为7位0~9的数字。
复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为电话号码 CHAR(7)。完成以下代码实现该操作。
答: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
_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表中,利用参照完整性约束实现,
显示全部