《数据库技术实验五》由会员分享,可在线阅读,更多相关《数据库技术实验五(9页珍藏版)》请在金锄头文库上搜索。
1、课程名称数据库技术实验成绩实验名称索引和数据完整性的使用学号姓名班级日期实验目的:1.掌握索引的使用方法;2.掌握数据完整性的实现方法;实验平台:利用 RDBMS(SQL Server 2008)及其交互查询工具(查询分析器)来操作T-SQL 语言;实验内容:1.索引(1)分别用图形方式和T-SQL 语句为 Employees 表的 departmentid列建立索引,并查看索引的类型。T-SQL 语句:use ygglgocreateindexdepart_indon employees(departmentid)go 图形方式:展开数据库yggl,展开 employees,右击“索引”,选
2、择“新建索引”选项。在新 建 索 引 的 窗口 中 填 写 索 引的名称和类型,单机“添加”按钮,列表中选择要创建的列。选择 单 机“确 定“按 钮 完 成 创建。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -(2)分别用图形方式和T-SQL语句为 Employees 表的 name列和 address 列上建立复合索引。T-SQL 语句:createindexad_indon employees(name,address)图形方式:名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -(3)分别用图形方式和T-SQL 语句为 Departments
3、表的 departmentname 列建立唯一非聚集索引。T-SQL 语句:createunique indexDep_indon departments(departmentname)图形方式:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -(4)重建 Employees 表中的所有索引。use ygglgoalterindexallon employees rebuild(5)删除 Employees 和 Departments表中建立过的所有索引。drop indexemployees.ad_ind,departments.Dep_ind,employees.de
4、part_ind2.数据完整性(1)使用T-SQL 命令创建一个新表,使用一个复合列为主键,作为表的约束,并为其命名。createtableEmployees6(EmployeeID char(6)notnull,Namechar(10)notnull,名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -Educationchar(4)notnull,Birthdaydate notnull,Sex bitnot nulldefault 1,WorkYear tinyintnull,Address varchar(40)null,PhoneNumberchar(12)nul
5、l,DepartmentIDchar(3)notnull,primarykey(EmployeeID,DepartmentID),constraintED_UKunique(EmployeeID,DepartmentID)go(2)使用 T-SQL 语句为表Employees 表添加一个新列shenfenzheng,并为该列定义UNIQUE约束。altertableEmployeesadd shenfenzhengvarchar(40)constraintAD_UKunique(shenfenzheng)go(3)创建新表student,只有号码和性别两列,性别只能包含男和女。createta
6、blestudent(号码 char(6)notnull,性别 char(2)notnullcheck(性别 in(男,女)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -(4)向 student表插入数据,性别列插入男和女以为的字符,查看发生的情况。(5)创建 Salary2,结构与 Salary相同,但 Salary2表不允许outcome 列大于 income列。createtableSalary2(EmployeeID char(6)notnull,InCome floatnotnull,OutComefloatnotnull,check(InCome=OutC
7、ome)(6)创建一个表Employees2 表,只考虑学号、出生日期和部门号字段,出生日期必须晚于1980 年 1 月 1 号,部门号只能在15 之间。createtableEmployees2(学号 char(6)notnull,出生日期date notnullcheck(出生日期1980-01-01),部门号 char(8)not nullcheck(部门号=1 and 部门号=5)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -(7)建立一个规则对象,限制值在020 之间,然后把它绑定到employees表的workyear字段上。createruletime_
8、ruleas time like0-20-9goexec sp_bindruletime_rule,Employees.WorkYearGo(8)删除上面建立的规则对象。exec sp_unbindruleEmployees.WorkYearexec sp_unbindruletime_rulegodrop ruletime_rule(9)创建一个表Salary3表(从表),它的列employeeid是外键,要引用salary表(主表)中的主键employeeid值,要求当删除或修改主表上的主键列时,salary3表中的 employeeid值也会随之变化。createtableSalary3
9、(EmployeeID char(6)notnullprimarykey,InCome floatnotnull,OutComefloat(8)not null,foreignkey(EmployeeID)referencesSalary(EmployeeID)on update cascade名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -on deletecascade)(10)使用alter table语句向 salary表中的 employeeid列上添加一个外键,要求当 employees 表中要删除和修改与employeeid值有关的行时,检查Salary表
10、中有没有与该employeeid值相关的记录,如果存在则拒绝更新employees 表。altertablesalaryadd constraintaa_foreignforeignkey(employeeid)referencesemployees(employeeid)on update no actionon deleteno action(11)在对象资源管理器中建立departments,employees和 salary三个表之间的参照关系。实验总结(结论或问题分析):通过本次实验,我感觉对索引的使用方法和数据完整性的实现方法不是很熟悉,实验中出现过很多的错误,中间有些问题请教别人才发现错误原因,最后才及时改正,用了很长的时间才做出来。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -