数据库应用- 数据完整性实验答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

)

相关文档
最新文档