sp_rename ˊgrade.grade_indexˊ,ˊgrade_indˊ, ˊINDEXˊ
8. 分别使用企业管理器和Transact-SQL语句DROP INDEX删除索引grade_ind。 再次使用系统存储过程sp_helpindex查看grade表上的索引信息。 DROP INDEX grade.grade_ind
9. 分别使用企业管理器和系统存储过程sp_fulltext_database为studentsdb数据库启用全文索引。
10. 分别使用企业管理器和系统存储过程sp_fulltext_catalog为studentsdb数据库建立全文目录,命名为FT_stu。为student_info表建立全文索引数据元。
execute sp_fulltext_catalog ˊFT_stuˊ,ˊcreateˊ
exec sp_fulltext_tableˊstudent_infoˊ,ˊcreateˊ,ˊFT_stuˊ,ˊPK_student_infoˊ 在建立全文索引数据元之前保证已为student_info表建立了PK_student_infl索引。 11. 为student_info表设置全文索引列名为ˊ家庭住址ˊ。在全文目录中注册该表,激活表的全文检索能力。
execute sp_fulltext_columnˊstudent_infoˊ,ˊ家庭住址ˊ,ˊaddˊ execute sp_fulltext_tableˊstudent_infoˊ,ˊactivateˊ 12. 填充全文目录,检查全文目录填充情况。 execute sp_fulltext_catalog ˊFT_stuˊ,ˊstart_fullˊ
While (fulltextcatalogproperty(ˊFT_stuˊ,ˊpopulateStatusˊ)<>0) BEGIN
waitfor delayˊ0;0;30ˊ--如果全文目录正处于填充状态,则等待30s后再检测一次 END
13. 在student_info表中,分别使用CONTAINS和FREETEXT函数通过全文目录检索家庭住址包含25号的记录。 SELECT姓名,家庭住址 FROM student_info
WHERE CONTAINS(家庭住址,ˊ25号ˊ)
14. 使用系统存储过程从studentsdb数据库中禁用全文检索。 15. 在studentsdb数据库中,以student_info表为基础,使用企业管理器建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。
16.在studentsdb数据库中,使用Transact-SQL语句 CREATE VIEW 建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
17.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的所有课程和成绩,如图1-9所示。
学号 姓名 课程名称 0001 刘卫平 大学计算机基础 0001 刘卫平 C语言程序设计 0001 刘卫平 SQL Server数据库 ? 0001 刘卫平 英语 0001 刘卫平 高等数学
图1-9 学号为0001的学生的视图信息
分数 80 90 87 86 78 18.分别使用企业管理器和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
19.使用Transact-SQL语句ALTER VIEW 修改视图v_stu_i,使其具有列名学号、姓名、性别。
ALTER VIEW v_stu_i(学号,姓名,性别)
AS SELECT 学号,姓名,性别 FROM student_info
20.使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。 sp_rename v_stu_i,v_stu_info
21.利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。
22.利用视图v_stu_i删除学号为0015的学生记录。
23.利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。 24.使用Transact-SQL语句DROP VIEW 删除视图v_stu_c和v_stu_g。
四、实验思考
1.是否可以通过视图v_stu_g修改grade表中学号列数据? 2.比较通过试图和基表操作表中数据的异同。
实验6 数据完整性
一、实验目的
1. 掌握企业管理器和Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。
2. 掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_help、sp_helptext查询规则信息,sp_rename 更名规则的方法。
3. 掌握企业管理器和Transact-SQL 语句(CREATE DEFAULT 、DROP DEFAULT)创建和删除默认对象的方法。
4. 掌握系统存储过程sp_bindefault、sp_unbindefault 绑定和解除绑定默认对象的操作方法,以及sp_help、sp_helptext 查询规则信息,sp_rename更名规则的方法。
5. 掌握企业管理器和Transact-SQL 语句(CREATE TABLE、AKTER TABLE)定义和删除约束的方法,并了解约束的类型。
二、实验准备
1. 了解数据完整性概念。
2. 了解创建规则和删除规则的语法,了解绑定规则和解除绑定规则的语法。 3. 了解创建默认对象和删除默认对象的语法,了解绑定和删除绑定默认对象的语法。 4. 了解约束的类型,创建约束和删除约束的语法。
三、实验内容和步骤
0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。 创建数据库代码
1.为sutdentsdb数据库创建一个规则,限制所输入的数据为7位0-9的数字。
(1)复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。完成以下代码实现该操作。
SELECT*INTO stu_phone FROM student_info
ALTER TABLE stu_phone ADD _____________ CHAR(7)NULL Stu_phone表结构如图1-10所示。 1 2 学号 0001 0002 姓名 刘卫平 张为民 性别 男 男 出生日期 1980-10-01 00:00:00.000 1980-12-02 00:00:00.000 家庭住址 衡山市东风路78号 东阳市八一北路25号 备注 NULL NULL 电话号码 NULL NULL
图 1-10 stu_phone 表结构
(2)创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。实现该规则的代码为
CREATE___________phone_rule AS
@phone LIKE `[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] (3)使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。实现该操作的代码为
sp_bindrule__________,`stu_phone.电话号码` (4)输入以下代码,进行一次插入操作:
INSERT INTO stu_phone(学号,姓名,电话号码)VALUES(`0009`,`王国强`,`1234yyy`) 产生以下出错信息:
服务器:消息513,级别16,状态1,行1
列的插入或更新与先前的CREATE RULE语句所强制的规则冲突。改语句已终止。冲突发生于数据库`studentsdb`,表`stu_phone`,列`电话号码`
试分析:为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?
2.使用企业管理器实现实验内容1的每个操作。
3.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。
4.使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。
5.删除stu_s_rule规则。 注意:stue_s_rule为stusex_rule更名后规则名,是否仍然绑定在stu_phone表的“性别”列上,应如何操作才能删除它。
6.在stuedentdb数据库中,建立日期、货币和字符等数据类型的默认对象。
(1)在查询分析其中,完成以下代码,创建默认对象df_date、df_char、df_money。 --创建日期型默认对象df_date CREATE_______df_date AS`2006-4-12` GO
----创建字符型默认对象df_char CREATE DEFAULT df_char ___________`unknown` GO
--创建货币型默认对象df_money CREATE DEFAULT _________ AS $100 GO
(2) 输入以下代码,在studentdb数据库中创建stu_fee数据表。
CREATE TABLE stu_fee (学号char(10)NOT NULL, 姓名char(8)NOT NULL, 学费 money,
交费日期 datetime, 电话号码 char(7))
表 stu_fee 的数据结构如图1-11所示。 学号 姓名 学费 交费日期 电话号码 图1-11 stu_fee.的数据结构
(3)使用系统存储过程 sp-bindefault 将默认对象 df_date、df_char、df_money 分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。
_______df-money,'stu_fee.学费' GO
Sp_bindefault_______,'stu_fee.交费日期' GO
Sp_bindefault df_char,stu_fee.电话号码' GO
(4) 输入以下代码,在stu_fee表进行插入操作:
INSERT INTO stu_fee(学号,姓名) values('0001','刘卫平')
INSERT INTO stu_fee(学号,姓名,学费)values('0001',张卫民',$120) INSERT INTO stu_fee(学号,姓名,学费,交费日期) VALUES('0001','马东',$110,'2006-5-12')
分析 stu_fee表中插入记录的各列的值是什么?
(5)完成以下代码解除默认对象df_char的绑定,并删除之。 ___________________'stu_fee.电话号码' ___________________DEFAULT df_char
按同样的方式,删除默认对象df_date/df_money。
7.使用企业管理器创建默认对象df_date、df_money,并将它们分别绑定到stu_fee表的“学费”、“交费日期”、“电话号码”列上,在插入操作中观察stu_fee表的数据变化情况,完成操作后,删除这些默认对象。
8.为student_info表添加一页,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到student_info表的“院系”列上,时期默认值为“信息院”,对student_info表进行插入操作,操作完成后,删除该默认对象。分别使用企业管理器和查询分析器实现。
9.在studentsdb数据库中用CREATE TABLE语句创建表stu_con,并同时创建约束。 (1)创建表的同时创建约束。 表结构如图1-12所示 列名 数据类型 长度 学号 姓名 性别 出生日期 char char char datetime 4 8 2 8