SQL数据完整性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验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-1所示。

图1-1 stu_phone表结构

(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]'

(3)使用系统存储过程sp_hndrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。

sp_bindrule phone_rule,'stu_phone.电话号码'

(4)插入操作输入以下数据:

学号姓名电话号码

0009 王国强1234yyy

是否可以成功插入?如果出现错误,请列出错误信息,为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule 规则能否对其他操作(如DELETE)进行规则检查?

答:○1、插入语句如下:

INSERT INTO stu_phone(学号,姓名,电话号码)

VALUES('0009','王国强','1234yyy')

○2、插入出错,错误信息如下:

消息513,级别16,状态0,第1 行

列的插入或更新与先前的CREATE RULE 语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'studentsdb',表'dbo.stu_phone',列'电话号码'。

语句已终止。

○3、出现错误的原因:在于电话号码的输入不对,因为电话号码绑定的规则是7位0-9的数字。

○4、修改:将电话号码中的字母改为数字即可,代码如下

INSERT INTO stu_phone(学号,姓名,电话号码)

VALUES('0009','王国强','1234567')

执行结果如下:

○5、不能,代码如下:

delete from stu_phone

where 电话号码= '1234567'

结果如下:

2.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。

CREATE RULE STUSEX_RULE

AS @SEX IN('男','女')

EXEC SP_BINDRULE STUSEX_RULE,'STU_PHONE.性别'

3.使用系统存储过程sp_help查询stusex_rule规则列表。

EXECUTE SP_HELP STUSEX_RULE

结果截图如下:

使用sp_helptext查询stusex_rule规则的文本。

EXECUTE SP_HELPTEXT STUSEX_RULE

结果截图如下:

使用sp_rename将stusex_rule规则更名为stu_s_rule。

EXECUTE SP_RENAME STUSEX_RULE , STU_S_RULE

结果截图如下:

4.删除stu_s_rule规则。

EXEC SP_UNBINDRULE 'STU_PHONE.性别'

用DROP RULE STU_S_RULE语句进行删除,

截图如下:

5.在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。

(1)创建默认对象df_date、df_char、df_money。

①、创建日期型默认对象df_date,默认日期为2006-4-12。

CREATE DEFAULT DF_DATE AS '2006-4-12'

结果截图如下:

②、创建字符型默认对象df_char,默认字符为“unknown”

CREATE DEFAULT DF_CHAR AS 'UNKNOWN'

结果截图如下:

③、创建货币型默认对象df_money,默认为100元

代码如下:

CREATE DEFAULT DF_MONEY AS 'RMB:100'

结果截图如下:

(2)在studentsdb数据库中创建stu_fee数据表。

学号 char(10) NOT NULL

姓名 char(8) NOT NULL,

学费 money

交费日期 datetime

电话号码 char(7)

CREATE TABLE STU_FEE

(

学号CHAR(10)NOT NULL,

姓名CHAR(8)NOT NULL,

学费MONEY ,

缴费日期DATETIME,

电话号码CHAR(7)

)

结果截图如下:

(3)使用系统存储过程sp_bindehult将默认对象df_date、df_char、

df_money分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。

相关文档
最新文档