数据库实用技术

上传人:m**** 文档编号:211958162 上传时间:2023-05-21 格式:DOCX 页数:12 大小:103.71KB
收藏 版权申诉 举报 下载
数据库实用技术_第1页
第1页 / 共12页
数据库实用技术_第2页
第2页 / 共12页
数据库实用技术_第3页
第3页 / 共12页
资源描述:

《数据库实用技术》由会员分享,可在线阅读,更多相关《数据库实用技术(12页珍藏版)》请在装配图网上搜索。

1、实验报告单診加哆二许花#阮Hujbeiof Educahon院(系)计算机学院专业计算机科学与技术 班级姓名学号同组人实验室S4305组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7 操作系统 SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。四、实验步骤(1) 建立索引 使用CREATE INDEX语句创建索引。对YGGL数据库

2、的Employees表中的DepartmentID列建立索引。 在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO dbo.DepartmentsEi dbo.Employees田口列(3 口適0 口釣束0 口触為日口套引departjnd阡唯一r非專隼)孤 PK_Employee_7AD04FF17F60ED5 雋集I0 口统州B息0 dbo.Salary在Employees表的Name列和Address列上建立复合索引。CREATE INDEX Ad_indON Employees(N

3、ame,Address)日口宾引由Ad_ind吓哇一r非垦集 占departjnd不庇一r非康集) PK_EmplQye&_7AD04FF17F60ED5 口融t信息对Departments表上的DepartmentName列建立唯一非聚集索引。 CREATE UNIQUE INDEX Dep_indON Departments(DepartName)d bo-.Departm ents国列田口釣束O 口養引Ji Dep_i n-d (ft F 非摩集J血 PK_D ep a rt rr e_B2079 B CDO425 A27 S 禺霜 使用界面方式创建索引。使用界面方式在Employees

4、表的PhoneNumber列上创建索引。启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表 Employees,右击“索引,选择“新建索引”选项。在新建索引的窗口中填写索引的名称和类 型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完 成创建工作。(2)重建索引。重建表Employees中的所有索引。USE YGGLGOALTER INDEX ALLON Employees REBUILD日 二 dbo.Emplo/ee&田口列田口约束0 口械器案引0 LJ島Ad_ind爲唯一r非漿巣 de-part_ind

5、还哇一 r非聚寫 、蠢 FK_Empl&yee_7AD04FF17F6OED59 廉集)0 口鋼+信宜(3)删除索引。使用DROP INDEX语句删除表Employees上的索引Depart_ind,计划使用如下SQL语句: DROP INDEX Depart_ind ON Employees日口 Adjnd阡唯一r非霆集)盘 PK_E m p I oyee_7AEXMFF17 F6OE D5 3 曦枭 0 口綺计信息(4) 数据完整性。创建一个表 Employees5,只含 EmployeesID, Name,Sex 和 Education 列。将 Name,设为 主键,作为列Name的约束

6、。对EmployeesID列进行UNIQUE约束,并作为表的约束。CREATE TABLE Employees5(EmployeeID char(6)N0T NULL ,Name char(10) NOT NULL PRIMARY KEY,Sex tinyint,Education char(4),CONSTRAINT UK_id UNIQUE(EmployeeID)Ei 3 dbo.Employees5 日口列圍 EmployeelD (chart&), not rull) y NamePK, chsr(IO). not null) 圍 Sex Ctinyint null|T| Educat

7、ion (chsr(4), null) 日口避? PK_Employ&e_737584F7OCBAE&77 UK_id删除上例中创建的UNIQUE约束。ALTER TABLE Employees5DROP CONSTRAINT UK_idGOd boBEnriiployees5日口列圍 EmployeeID (charfG), n-ot null)? Name (PK, chr(1-0, not null)H Sex (tinyint null)圍 Education tchar(41 null日漣f PK_E m p I oyee_7375 94F70匚BAES77 创建新表student,

8、只考虑“号码”和“性别”两列,性别只能包含男或女。CREATE TABLE student(号码 char(6)N0T NULL,性别 char(2) NOT NULL,CHECK(性别 IN(男,女)0 口 dbo.student曰口列m 号码(charBJ, not null 性别(charfZ), not nullEJ嚏 口均束J CK_&t u d ent_1!l_1l O0B79 5 B 创建新表Salary2,结构与Salary相同,但Salary2表不可以Out Come列大于Income列。 CREATE TABLE Salary2(EmployeesID char(6) NO

9、T NULL,Income float NOT NULL,OUTCOME float NOT NULL,CHECK (Income二OutCome)0 口 dbo.SalaryZ 日口列百 EmployeesID (chart&). not null圍 Income (float, not null 圍 OUTCOME (float not null)口適日口釣束打 CK_&alary2_1273ClCD 对YGGL数据库中的Employees表进行修改,其增加“DepartmentID”字段的CHECK约束。 USE YGGLGOALTER TABLE EmployeesADD CONSTR

10、AINT depart check(DepartmentID=l AND DepartmentID=5)日 13 dbo.Employee&El 列El 口迥日EJ釣束口 depart渥D F_E im pl oyees_S-ex_ 01493 5CB国a蹴譌 创建一个规则对象,用以限制输入到该规则所绑定的列中的值只能是该规则中列出的值。 CREATE RULE list_ruleAS list in(财务部,研发部,人力资源部,销售部)GOEXEC sp_bindrule list_rule,Departments.DepartNameGO由消息已将赦则绑定到表的列。 创建一个表Salary

11、3,要求所有Salary3表上EmployeelD列的值都要出现在Salary表 中,利用参照完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也 会随之变化create table Salary3(EmployeeID char(6) not null primary key,InCome float not null.Out Come floa t(8) not null,foreign key(EmployeeID)references Salary(EmployeeID)on update cascadeon dele

12、te cascade) _ dbo.S-aIary3 日口列? EmployeelD (PK, FK, chr(61 not null InCo-me (floa not null)同 Outcome (real, not null日L盪| PK_Sal a ry3_7AD04FF1 W2CSB23| FK_alary3_Empl&y&_1A14E395五、记录与处理(实验数据、误差分析、结果分析)(1)建立索引 【思考与练习】a. 索引创建完后在对象资源管理器中查看表中的索引。b. 了解索引的分类情况答:索引分为两类:分别是聚集索引和非聚集索引,其中有唯一索引和复合索引。 每一个表中只可以有

13、一个聚集索引,但可以有多个非聚集索引。c. 使用CREATE INDEX语句能创建主题吗?不可以d. 在什么情况下可以看到建立索引的好处?当要在庞大的数据库中寻找自己想要的数据的时候,建立索引是很有好处的,优点如下: 第一:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三:可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四:在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的 时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 【思考与练习】a.

14、使用界面方式创建一个复合索引。杠名|工) 褰引屯隊Q)盘号I类忍咋1叫frill _i nJ.s JTF展务昂:抽2他匹扭4UE J9 W i ai x-Lriit r礬直看性劇甜策加鸟.*.:: |*AJ I:.fnK_31Ld韭坯某b. 在Employees表的表设计窗口选择Address列,右击选择“索引/键菜单项,在新窗口 中的Address列创建一个唯一的索引。而虽;索引言你QJ常引处口 iJJ吃一g君引键列电萨口口 口口口 口回回乞称迪握出型于百PVfvCJlif d D)10Idu-=B.ii c-u4Bavthd-Kyd*,tAt3 TibSStKMt1VorkTu-ta ny

15、mt1否Jdiir axivarcliM- 4(1)40Fh Q G Kurib * ITrh*-L.12)12/tiT NUI 空上T? QJJrjs(C)确定c. 创建一个数据量很大的新表,查看使用索引和不使用索引的区别。(2) 重建索引。【思考与练习】重建表Employees中EmployeelD列上的索引。USE YGGLGOcreate index employid indON Employees(EmployeelD)GOALTER INDEX employid_indON Employees REBUILDGO(3) 删除索引。【思考与练习】a. 使用QROP INDEX 一次删

16、除Employees表上的多个索引USE YGGLGODROP INDEX Employees. depart_ind, Employees. Employ_indGOb使用界面方式删除Department表上的索引。要删除的对象迫对象喀称对象类型所伏态消息Depind隶引(4) 数据完整性。【思考与练习】a. 使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。 USE YGGLGOCREATE TABLE Employ(EmployeeID char(8) NOT NULL,Name char(10) NOT NULL,Sex bit NOT NULL,Edu

17、cation char (5),CONSTRAINT UK_id PRIMARY KEY(EmployeeID, Name, Sex)b. 使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE 约束。USE YGGLGOALTER TABLE Employees5ADD Address varchar(40) NULL CONSTRAINT USK_id UNIQUEGOC.使用界面方式为一个新表定义主键和UNIQUE约束,并了解如何使用图形向导方式删除主 键和UNIQUE约束。Fmn IntzpATnnar(S)Bnar(10)BitB诣

18、iEB列名数据类型Null值EmployeelD8charI圍基弓丿龜【,“ 盘全文盖引旧 请| XML索引凶.”辺空闫躬的“餉知浸泗本数据类型厶常RI川(占腳 【思考与练习】向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。Microsoft SQL Serve-r Management Studio梓,悲抑顼乐菲揑交行2中的數据”错i戻源:.Net SqlClient Data Pro-vidern错熒肖息;INSERT语旬与CHECK釣車匚1_毗口北讯_性别 _132CeE22)t突 筱冲突堂生于甄据阵GGL f d bo. stud ent, column 性

19、别* 石句已蜒止”请更IE错1护里试.或按Esc郦肖更改。 【思考与练习】a. 向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。INSERT语句与CHECK约束CK_Salary2_lA14E395冲突。该冲突发生于数据库 YGGL,表dbo.Salary2。语句已终止。b. 创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980 年1月1日。USE YGGLGOCREATE TABLE Employees6(学号 char (6) NOT NULL,出生日期 varchar(20) NOT NULLCHECK (出生日期1980-1-

20、1) 【思考与练习】测试CHECK约束的有效性。insert into Employees6 values(001,1980-1-0)INSERT语句与CHECK约束CK_Employees6_ 出生日期_1BFD2C07冲突。该冲突发生于数据 库YGGL,表dbo.Employees6,column 出生日期。语句已终止。结果是:上面的记录添加不进去表现出了 check的有效性. 【思考与练习】创建一个规则对象,限制在020之间。然后把他绑定知道Employees表的WorkYear字段上。 USEYGGLGOCREATE RULE Emp_ruleAS Emplike0-20GOEXEC

21、sp_bindrule Emp_rule,Employees.WorkYearGO删除上述建立的规则对象。USEYGGLGOEXEC sp_unbindrule Employees.WorkYearDROP RULE Emp_ruleGO a.创建完Salary3表后,初始化该标的数据与salary表相同。删除salary表中一行数 据,在查看salary3表的内容,看看会发生什么情况。b. 使用ALTER TABLE语句向salary表中的EmployeelD列上添加一个外键,要求Employeels 表中要删除或修改与EmployeelD值有关的行时,检查Salary表中有没有与该EployeelD值 相关的记录,如果存在则拒绝更新Emloyees表。c. 在对象资源管理器中建立Departments、Employees和Salary三个表之间的参照关系。六、思考题简述SQL Server 2000规则与CHECK约束的区别CHECK约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个CHECK约 束。CHECK约束可作为CREATE TABLE语句的一部分进行指定,而规则以单独的对象创建,然 后绑定到列上。七、实验小结通过本次实验,掌握索引的使用方法以及数据完整性的实现方法

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!