数据库实验六
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 综合型实验项目索引和数据完整性
匹配课程代码及名称:070785,数据库应用设计
适用专业及本项目实验学时:计算机科学与技术专升本,6学时
一、实验目的及要求
(1)掌握索引的使用方法;
(2)掌握索引的设计与实现方法。
(3)掌握数据完整性的类型;
(4)掌握数据完整性的实现方法。
二、实验内容
在已建好的YGGL数据库中,设计并创建索引,并进行索引的重建、删除操作。提交程序源代码(电子版,1周内)和实验报告(纸制、1周内)。三、实验条件及设备要求
已安装SQL Server 2008数据库管理系统的实验机。
四、实验相关知识点
数据库实体完整性、索引。
五、实验实施步骤
(一)建立索引
1、对YGGL数据库的Employees表中的DepartmentID列建立索引。
createindex depart_ind
on Employees(DepartmentID)
2、在Employees表的Name列和Address列上建立复合索引。
create index ad_ind on Employees(Name,Address)
3、对Departments表上的DepartmentName列建立唯一非聚集索引。
go
create unique index dep_ind on Departments(DepartmentName) go
(二)重建索引
1、重建表Employees中的所有索引。
alter index all on Employees rebuild
(三)删除索引。
1、使用DROP INDEX语句删除表Employees上的索引Depart_ind。
drop index Depart_ind on Employees
2、使用DROP INDEX一次删除Employees表上的多个索引。
go
drop index Departments.Dep_ind,Employees.Ad_ind
go
(四)数据完整性操作
1、创建一个表Employees5,只含EmployeesID,Name,Sex和Education列。将Name,设为主键,作为列Name的约束。对EmployeesID列进行UNIQUE约束,并作为表的约束。
create table Employees5(
EmployeesID char(6)not null,
Name char(10)not null primary key,
Sex tinyint,
Education char(4),
constraint UK_id unique(EmployeesID)
)
2、删除上题中创建的UNIQUE约束。
alter table Employees5
drop constraint UK_id
3、使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。
create table Employees7
(
EmployeeID char(6)not null,
Name char(10)not null,
Education char(4)not null,
Birthday date not null,
Sex bit not null default 1,
WorkYear tinyint null,
Address varchar(40)null,
PhoneNumber char(12)null,
DepartmentID char(3)not null,
primary key (EmployeeID,DepartmentID),
constraint ED_UK unique(EmployeeID,DepartmentID)
)
4、使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIOQUE约束。
alter table Employees5
add Address varchar(40),
constraint AD_UK unique (Address)
5、创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女。向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。
create table student(
号码char(6)not null,
性别char(2)check(性别='男'or性别='女')
)
6、创建新表Salary2,结构与Salary相同,但Salary2表不可以OutCome列大于Income列。向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。
create table Salary2
(EmployeeID char(6)not null,
InCome float not null,
OutCome float not null,
check(InCome>=OutCome)
)
7、创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。
create table Employees6
(
学号char(6)not null,
出生日期date not null check(出生日期>'1980-01-01'),
)
8、对YGGL数据库中的Employees表进行修改,为其增加“DepartmentID”字段的CHECK约束。约束条件为DepartmentID值应大于等于1且小于等于5。测试CHECK约束的有效性。
alter table Employees
add constraint depart check(DepartmentID>=1 and DepartmentID<=5)