实验6数据完整性Word格式文档下载.docx

上传人:b****3 文档编号:16768796 上传时间:2022-11-25 格式:DOCX 页数:13 大小:497.47KB
下载 相关 举报
实验6数据完整性Word格式文档下载.docx_第1页
第1页 / 共13页
实验6数据完整性Word格式文档下载.docx_第2页
第2页 / 共13页
实验6数据完整性Word格式文档下载.docx_第3页
第3页 / 共13页
实验6数据完整性Word格式文档下载.docx_第4页
第4页 / 共13页
实验6数据完整性Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验6数据完整性Word格式文档下载.docx

《实验6数据完整性Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验6数据完整性Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

实验6数据完整性Word格式文档下载.docx

1234yyy'

产生以下出错信息:

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

列的插入或更新与先前的CREATERULE语句所指定的规则发生冲突。

该语句已终止。

冲突发生于

数据库'

studentsdb'

表'

dbo.stu_phone'

列'

电话号码'

语句已终止。

试分析:

为什么会产生该出错信息?

如果要实现插入操作,应修改INSERTINTO语句中的哪个值?

phone_rule规则能否对其他操作(如DELETE)进行规则检查?

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

(3)使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。

(4)删除stu_s_rule规则。

 

stu_s_rule(stusex_rule更名后规则名)是否仍然绑定在stu_phone表的“性别”列上?

应如何操作才能删除它?

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

①在查询设计器中,完成以下代码,创建默认对象df_date、df_char、df_money。

--创建日期型默认对象df_date

CREATEdf_date

AS'

2009-4-12'

GO

--创建字符型默认对象df_char

CREATEDEFAULTdf_char

'

unknown'

--创建货币型默认对象df_money

CREATEDEFAULT

AS$100

②输入以下代码,在studentsdb数据库中创建stu_fee数据表。

CREATETABLEstu_fee

(学号char(10)NOTNULL,

姓名char(8)NOTNULL,

学费money,

交费日期datetime,

电话号码char(7))

表stu_fee的数据结构如图1-11所示。

图1-11stu_fee的数据结构

③使用系统存储过程sp_bindefault将默认对象df_money、df_date、df_char分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。

df_money,'

stu_fee.学费'

sp_bindefault,'

stu_fee.交费日期'

sp_bindefaultdf_char,'

stu_fee.电话号码'

④输入以下代码,在stu_fee表进行插入操作:

INSERTINTOstu_fee(学号,姓名)VALUES('

0001'

刘卫平'

INSERTINTOstu_fee(学号,姓名,学费)VALUES('

张卫民'

$120)

INSERTINTOstu_fee(学号,姓名,学费,交费日期)

VALUES('

马东'

$110,'

2006-5-12'

分析stu_fee表中插入记录的各列的值是什么?

⑤完成以下代码,解除默认对象df_char的绑定,并删除之。

'

DEFAULTdf_char

按同样的方式,删除默认对象df_date、df_money。

(6)为student_info表添加一列,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到student_info表的“院系”列上,使其默认值为“信息院”,对student_info表进行插入操作,操作完成后,删除该默认对象。

(7)在studentsdb数据库中用CREATETABLE语句创建表stu_con,并同时创建约束。

①创建表的同时创建约束。

表结构如图1-12所示。

图1-12要创建的表的结构

约束要求如下:

将学号设置为主键(PRIMARYKEY),主键名为pk_sid。

为姓名添加唯一约束(UNIQUE),约束名为uk_name。

为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。

为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:

出生日期>

'

1988-1-1'

②在stu_con表中插入如表1-1所示的数据记录。

表1-1在stu_con表中插入的数据

学号

姓名

性别

出生日期

家庭住址

0009

张小东

1989-4-6

0010

李梅

1983-8-5

0011

王强

1988-9-10

0012

1989-6-3

分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?

③使用ALTERTABLE语句的DROPCONSTRAINT参数项在查询设计器中删除为stu_con表所建的约束。

(8)用SQLServer管理平台完成实验内容7的所有设置。

(9)在查询设计器中,为studentsdb数据库的grade表添加外键约束(FOREIGNKEY),要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。

①使用系统存储过程sp_help查看grade表的外键信息。

②在grade表中插入一条记录,学号为0100,课程编号为0001,分数为78。

观察SQLServer会做何处理,为什么?

如何解决所产生的问题?

③使用查询设计器删除grade表的外键fk_sid。

三、实验结果

1.为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。

(1)复制学生表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。

SELECT*INTOstu_phoneFROM学生表

ALTERTABLEstu_phoneADD电话号码CHAR(7)NULL

(2)创建一个规则phone_rule,限制所输入的数据为7位0~9的数字

createrulephone_rule

as@电话号码like'

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

sp_bindrulephone_rule,'

stu_phone.电话号码

(4)输入以下代码,进行一次插入操作:

修改:

INSERT 

INTO 

stu_phone(学号,姓名,电话号码)VALUES('

1234567'

) 

phone_rule规则可以对其他操作进行规则检查

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

createrulestusex_rule

as@性别in('

男'

女'

3.使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。

sp_helpstusex_rule

Sp_helptextstusex_rule

sp_rename 

stusex_rule,stu_s_rule

4.删除stu_s_rule规则。

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。

CREATEDEFAULTdf_date

2006-4-12'

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

as'

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

CREATEDEFAULTdf_money

AS‘$100’

(2)输入以下代码,在studentsdb数据库中创建stu_fee数据表。

(3)使用系统存储过程sp_bindehult将默认对象df_date、df_char、df_money分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。

sp_bindefaultdf_money,'

sp_bindefaultdf_date,'

(4)输入命令,在stu_fee表进行插入操作:

(学号,姓名)values('

,’刘卫平’)

INSERTINTOstu_fee(学号,姓名)values('

(学号,姓名,学费)values('

,’张卫民’,$120)

INSERTINTOstu_fee(学号,姓名,学费)values('

(学号,姓名,学费,交费日期)values('

,‘马东‘,$110,’2006-5-12‘)

INSERTINTOstu_fee(学号,姓名,学费,交费日期)

VALUES('

$110,'

分析stu_fee表中插入记录的各列的值是什么?

(5)完成以下代码解除默认对象df_char、df_date、df_money的绑定,并删除之。

sp_unbindefault 

drop 

DEFAULT 

df_char 

Go

df_date 

go

df_money

6.为学生表添加一列,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到学生表的“院系”列上,使其默认值为“信息院”,对学生表进行插入操作,操作完成后,删除该默认对象。

1) 

alter 

table 

学生表 

add 

院系varchar(8) 

2)create 

default 

stu_d_df 

as 

信息院'

go 

sp_bindefault 

学生表.院系'

(3)sp_unbindefault 

7.在studentsdb数据库中用CREATETABLE语句创建表stu_con,并同时创建约束。

(1)创建表的同时创建约束。

①将学号设置为主键(PRIMARYKEY),主键名为pk_sid。

②为姓名添加唯一约束(UNIQUE),约束名为uk_name。

③为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”

④为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:

1988-1-1’。

CREATETABLEstu_con

(学号char(4),

姓名char(8),

性别char

(2),

出生日期datetime,

家庭住址varchar(50),

constraint 

PK_sid 

PRIMARY 

KEY(学号), 

uk_name 

UNIQUE(姓名),

ck_bday 

check(出生日期>

),

stu_con

df_sex 

FOR 

(2)在stu_con表中插入如表1-1所示的数据记录。

stu_con 

(学号,姓名,出生日期) 

values('

张小东'

1989-4-6'

0010'

李梅'

1983-8-5'

消息547,级别16,状态0,第1 

行 

语句与CHECK 

约束"

ck_bday"

冲突。

该冲突发生于数据库"

studentsdb"

,表"

dbo.stu_con"

 

column 

出生日期'

0011'

王强'

1988-9-10'

0012'

1989-6-3'

消息2627,级别14,状态1,第1 

违反了UNIQUE 

KEY 

约束'

uk_name'

不能在对象'

dbo.stu_con'

中插入重复键。

语句已终止

(3)使用ALTER 

TABLE语句的DROP 

CONSTRAINT参数项在查询分析器中删除为stu_con表所建的约束。

df_sex,uk_name,pk_sid,ck_bday

8.用SQL 

Server管理平台完成实验内容7的所有设置。

9.在查询设计器中,为studentsdb数据库的grade表添加外键约束(FOREIGNKEY),要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。

(1)alter 

grade

fk_sid 

FOREIGN 

KEY(学号)references 

student_info(学号) 

sp_help 

(2) 

insert 

grade 

values 

('

0100'

78'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1