实验五 索引和数据完整性_第1页
实验五 索引和数据完整性_第2页
实验五 索引和数据完整性_第3页
实验五 索引和数据完整性_第4页
实验五 索引和数据完整性_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验五 索引和数据完整性1、目的与要求(1)掌握索引的使用方法。(2)掌握数据完整性的实现方法。2、实验准备(1)了解索引的作用与分类。(2)掌握索引的创建方法。(3)理解数据完整性的概念及分类。(4)掌握各种数据完整性的实现方法。3、实验内容(1)建立索引。 使用CREATE INDEX语句创建索引。 A、对YGGL数据库的Employees表中的DepartmentID列建立索引。 在“查询分析器”窗口中输入如下程序并执行。 B、在Employees表的Name列和Address列上建立复合索引。 C、对Department表上的DepartmentName列建立唯一非聚集索引。 【思考与

2、练习】 A、索引创建后在对象资源管理器中查看表的索引。上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引”中显示该表中建立的索引。详细结果如上面截图中显示。B、了解索引的分类情况。按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。非聚集索引完全独立于数据行的结构。C、使用CREATE INDEX语句能够创建主键吗?D、在什么情况下能够看到建立索引的好处? 数据库索引是为了增加查询速度而对表字段附加的一种标识。数据库的索引并不是只有好处

3、或者只有坏处的。当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;还有当表内数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。但是当我们数据库非常大时候,经常进行GROUP BY查询时候,若将GROUP BY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。 使用界面方式创建索引。 使用界面方式在Employees表的PhoneNumber列上创建索引。启动SQL Server Managerment Studio,在对象资源管理器中展开数据库YGGL,展开表Employ

4、ees,右击“索引”,选择“新建索引”选项。在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列框中选择要创建索引的列,选择完单击“确定”按钮即完成创建的工作。【思考与练习】A、使用界面方式创建一个复合索引。B、在Employees表的设计窗口中选择Address列,右击选择“索引/键”菜单项,在新窗口中为Address创建一个唯一索引。C、创建一个数据量很大的新表,查看使用索引和不使用索引的区别。(2)重建索引。 重建Employees表中的所有索引。【思考与练习】重建表Employees中EmployeeID列上的索引。(3)删除索引。 使用DROP INDEX语句删除表Empl

5、oyees上的索引depart_ind,使用如下T-SQL语句。 从上面截图中可以显示,之前在Employees表中创建的depart_ind索引已经被删除。【思考与练习】A、使用DROP INDEX一次删除Employees表上的多个索引。B、使用界面方式删除Department表上的索引。在数据库YGGL中的Department表中打开“索引”,找到表Department表上的索引Dep_ind,右键删除,在弹出的“删除对象”窗口中选择“确定”,删除索引Dep_ind。(4)数据完整性。 创建一个表Employees5,只含EmployeeID、Name、Sex和Education列。将N

6、ame设为主键,作为列Name的约束。对EmployeeID列进行UNIQUE约束,并将其作为表的约束。 删除上列中创建的UNIQUE约束。 【思考与练习】A、使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命令。B、使用ALTER TABLE语句为表Employees5添加一个新列Address,并未该列定义UNIQUE约束。C、使用界面方式为一个新表定义主键和UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIQUE约束。 创建新表student,只考虑“号码”和“性别”两列,性别只能够包含男或女。【思考与练习】向该表中插入数据,“性别”列插入“男”和“

7、女”以外字符,查看会发生什么情况?模拟用户不小心输入汉字错误: 创建新表Salary2表,结构与表Salary相同,但是表Salary2不允许OutCome大于InCome列。【思考与练习】 A、向表中插入数据,查看OutCome比InCome大时会发生什么情况?在“查询分析器”中输入上面截图中的代码,执行后出现下面这样的错误。原因:在创建表Salary2的时候,规定了InCome大于OutCome,如果输入的数据不满足这样的条件,那么就会出现错误与规定冲突。 B、创建表Employees6表,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。在“查询分析器”中输入上面的代

8、码,在下面的结果栏中发现命令已经执行。 对YGGL数据库中Employees表进行修改,增加“DepartmentID”字段的CHECK约束。在“查询分析器”窗口中输入下面程序并执行:执行上面的代码,但是出现了这样的问题。【思考与练习】测试CHECK约束的有效性。在Employees表中进行增加修改,设置Check约束,使得DepartmentID在15之间。如上面T-SQL命令所示,向表Employees中插入数据时,在结果栏中显示了check约束提示错误: 从上面的T-SQL命令和结果栏中消息提示可以得出,该CHECK约束有效。 创建一个规则对象,用限制输入到该规则所绑定的列中的值只能是该

9、规则中列出的值。在“查询分析器”中输入上面截图中的代码,显示规则已经绑定。【思考与练习】 A、建立一个规则对象,限制值在020,然后把它绑定到Employees表的WorkYear字段上。 B、删除上述建立的规则对象名。 创建表Salary3,要求所有表Salary3上EmployeeID列的值都要出现在表Salary中,利用参照完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化。使用T-SQL语句:执行上面截图中的命令,表Salary3已经成功建好。【思考与练习】 A、创建表Salary3后,初始化该表的数据与S

10、alary表相同。删除Salary表中一行数据,在查看表Salary3中内容,看看会发生什么?在左侧对象资源管理器中查看新建的的Salary3表及其数据: 利用参照完整性约束实现,当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化。 B、使用ALTER TABLE语句向Salary表中的EmployeeID列上添加一个外键,要求当Employees表中要求删除或修改EmployeeID值有关的行时,坚持Salary表中有没有与该EmployeeID值有关的记录,如果存在,则拒绝更新Employees表。 C、在对象资源管理器中建立Departments、Employees 和Salary 3个表之间的参照关系。4、实验总结 通过本次实验我了解了索引和CHECK约束的大致用法,例如:在表中约束输入性别只准“男

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论