数据库实验报告- 数据完整性.doc
文本预览下载声明
实验6 数据完整性
一、实验目的
1.掌握Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。
2.掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_help、sp_helptext查询规则信息、sp_rename更名规则的方法。
3.掌握Transact-SQL语句(CREATE DEFAULT、DROPDEFAULT)创建和删除默认对象的方法。
4.掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询规则信息。
5.掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。
二、实验内容和步骤
1.为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。
(1)复制学生表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。完成以下代码实现该操作。
SELECT * INTO stu_phone FROM 学生表
ALTER TABLE stu_phone ADD 电话号码 CHAR(7)NULL
stu_phone表结构如图1-10所示。
图1-10 stu_phone表结构
SELECT * INTO stu_phone FROM 学生表
ALTER TABLE stu_phone ADD 电话号码CHAR(7)NULL
(2)创建一个规则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]
检验:
电话号码为8位时无法插入!
电话号码为7位时可以插入!
(3)使用系统存储过程sp_hndrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。
sp_hndrule phone_rule , ‘stu_phone.电话号码’
(4)插入操作输入以下数据:
学号 姓名 电话号码
0009 王国强 1234yyy
是否可以成果插入?如果出现错误,请列出错误信息,为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?
INSERT INTO stu_phone(学号,姓名,电话号码)
VALUES(0009,王国强,1234yyy)
513,级别16,状态0,第1 行
列的插入或更新与先前的CREATE RULE 语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库studentsdb,表dbo.stu_phone,列电话号码。
语句已终止。
修改后:
INSERT INTO stu_phone(学号,姓名,电话号码)
VALUES(0009,王国强,1234yyy)
phone_rule规则能否对其他操作(如DELETE)进行规则检查?
可以
2.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。
CREATE rule stusex_rule
AS
@性别in (男,女)
sp_bindrule stusex_rule , stu_phone.性别sp_help stusex_rule
sp_helptext stusex_rule
sp_rename stusex_rule,stu_s_rule
4.删除stu_s_rule规则。
先解除绑定:sp_unbindrule stu_s_rule, stu_phone.性别drop rule stu_s_rule
注意:stu_s_ rule为stusex_ rule更名后规则名,是否仍然绑定在stu_phone表的“性别”列上,应如何操作才能删除它。
5.在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。
(1)创建默认对象df_date、df_char、df_money。
创建日期型默认对象df_date,默认日期为2006-4-12。
创建字符型默认对象df_char,默认字符为“unknown”
创建货币型默认对象df_money,默认为100元
CR
显示全部