实验五索引和大数据完整性Word下载.docx
《实验五索引和大数据完整性Word下载.docx》由会员分享,可在线阅读,更多相关《实验五索引和大数据完整性Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
〔4〕掌握各种数据完整性的实现方法。
3、实验容
〔1〕建立索引。
①使用CREATEINDEX语句创建索引。
A、对YGGL数据库的Employees表中的DepartmentID列建立索引。
在“查询分析器〞窗口中输入如下程序并执行。
B、在Employees表的Name列和Address列上建立复合索引。
C、对Department表上的DepartmentName列建立唯一非聚集索引。
【思考与练习】
A、索引创建后在对象资源管理器中查看表的索引。
上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引〞中显示该表中建立的索引。
详细结果如上面截图中显示。
B、了解索引的分类情况。
按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。
聚集索引将数据行的键值在表排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。
非聚集索引完全独立于数据行的结构。
C、使用CREATEINDEX语句能够创建主键吗?
D、在什么情况下能够看到建立索引的好处?
数据库索引是为了增加查询速度而对表字段附加的一种标识。
数据库的索引并不是只有好处或者只有坏处的。
当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;
在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;
还有当表数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。
但是当我们数据库非常大时候,经常进展GROUPBY查询时候,假如将GROUPBY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。
②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
启动SQLServerManagermentStudio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引〞,选择“新建索引〞选项。
在新建索引的窗口中填写索引的名称和类型,单击“添加〞按钮,在列框中选择要创建索引的列,选择完单击“确定〞按钮即完成创建的工作。
A、使用界面方式创建一个复合索引。
B、在Employees表的设计窗口中选择Address列,右击选择“索引/键〞菜单项,在新窗口中为Address创建一个唯一索引。
C、创建一个数据量很大的新表,查看使用索引和不使用索引的区别。
〔2〕重建索引。
重建Employees表中的所有索引。
重建表Employees中EmployeeID列上的索引。
〔3〕删除索引。
使用DROPINDEX语句删除表Employees上的索引depart_ind,使用如下T-SQL语句。
从上面截图中可以显示,之前在Employees表中创建的depart_ind索引已经被删除。
A、使用DROPINDEX一次删除Employees表上的多个索引。
B、使用界面方式删除Department表上的索引。
在数据库YGGL中的Department表中打开“索引〞,找到表Department表上的索引Dep_ind,右键删除,在弹出的“删除对象〞窗口中选择“确定〞,删除索引Dep_ind。
〔4〕数据完整性。
①创建一个表Employees5,只含EmployeeID、Name、Sex和Education列。
将Name设为主键,作为列Name的约束。
对EmployeeID列进展UNIQUE约束,并将其作为表的约束。
②删除上列中创建的UNIQUE约束。
A、使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命令。
B、使用ALTERTABLE语句为表Employees5添加一个新列Address,并未该列定义UNIQUE约束。
C、使用界面方式为一个新表定义主键和UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIQUE约束。
③创建新表student,只考虑“〞和“性别〞两列,性别只能够包含男或女。
向该表中插入数据,“性别〞列插入“男〞和“女〞以外字符,查看会发生什么情况?
模拟用户不小心输入汉字错误:
④创建新表Salary2表,结构与表Salary一样,但是表Salary2不允许Oute大于Ine列。
A、向表中插入数据,查看Oute比Ine大时会发生什么情况?
在“查询分析器〞中输入上面截图中的代码,执行后出现下面这样的错误。
原因:
在创建表Salary2的时候,规定了Ine大于Oute,如果输入的数据不满足这样的条件,那么就会出现错误与规定冲突。
B、创建表Employees6表,只考虑“学号〞和“出生日期〞两列,出生日期必须晚于1980年1月1日。
在“查询分析器〞中输入上面的代码,在下面的结果栏中发现命令已经执行。
⑤对YGGL数据库中Employees表进展修改,增加“DepartmentID〞字段的CHECK约束。
在“查询分析器〞窗口中输入下面程序并执行:
执行上面的代码,但是出现了这样的问题。
测试CHECK约束的有效性。
在Employees表中进展增加修改,设置Check约束,使得DepartmentID在1—5之间。
如上面T-SQL命令所示,向表Employees中插入数据时,在结果栏中显示了check约束提示错误:
从上面的T-SQL命令和结果栏中消息提示可以得出,该CHECK约束有效。
⑥创建一个规如此对象,用限制输入到该规如此所绑定的列中的值只能是该规如此中列出的值。
在“查询分析器〞中输入上面截图中的代码,显示规如此已经绑定。
A、建立一个规如此对象,限制值在0~20,然后把它绑定到Employees表的WorkYear字段上。
B、删除上述建立的规如此对象名。
⑦创建表Salary3,要求所有表Salary3上EmployeeID列的值都要出现在表Salary中,利用参照完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化。
使用T-SQL语句:
执行上面截图中的命令,表Salary3已经成功建好。
A、创建表Salary3后,初始化该表的数据与Salary表一样。
删除Salary表中一行数据,在查看表Salary3中容,看看会发生什么?
在左侧对象资源管理器中查看新建的的Salary3表与其数据:
利用参照完整性约束实现,当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化。
B、使用ALTERTABLE语句向Salary表中的EmployeeID列上添加一个外键,要求当Employees表中要求删除或修改EmployeeID值有关的行时,坚持Salary表中有没有与该EmployeeID值有关的记录,如果存在,如此拒绝更新Employees表。
C、在对象资源管理器中建立Departments、Employees和Salary3个表之间的参照关系。
4、实验总结
通过本次实验我了解了索引和CHECK约束的大致用法,例如:
在表中约束输入性别只准“男〞或者“女〞,利用CHECK约束,当输入字符错误时候会出现错误。
同样也了解了索引的建立和使用的利弊,索引就像一把双刃剑,用得好查询搜索速度会提升很多,但是用得不好会浪费很多存资源。
同时通过本次实验知道了很多完整性规如此的实现方法。
总之,通过本次实验,收获了很多之前并不了解的知识;
先前做一遍,再听教师讲解一遍理解更加深刻了。