数据库技术实验五
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称数据库技术实验
成绩
实验名称索引和数据完整性的使用
学号姓名班级日期
实验目的:
1.掌握索引的使用方法;
2.掌握数据完整性的实现方法;
实验平台:
利用RDBMS(SQL Server 2008)及其交互查询工具(查询分析器)来操作T-SQL语言;
实验内容:
1.索引
(1)分别用图形方式和T-SQL语句为Employees表的departmentid列建立索引,并查看索引的类型。
T-SQL语句:
use yggl
go
create index depart_ind
on employees(departmentid)
go
图形方式:
展开数据库yggl,展开employees,右击“索引”,选择“新建索引”选项。在新建索引的窗
口中填写索引
的名称和类型,
单机“添加”按
钮,列表中选择
要创建的列。选
择单机“确定
“按钮完成创
建。
(2)分别用图形方式和T-SQL语句为Employees表的name列和address列上建立复合索引。
T-SQL语句:
create index ad_ind
on employees(name,address)
图形方式:
(3)分别用图形方式和T-SQL语句为Departments表的departmentname列建立唯一非聚集索引。
T-SQL语句:
create unique index Dep_ind
on departments(departmentname)
图形方式:
(4)重建Employees表中的所有索引。
use yggl
go
alter index all
on employees rebuild
(5)删除Employees和Departments表中建立过的所有索引。
drop index employees.ad_ind,departments.Dep_ind,employees.depart_ind
2. 数据完整性
(1)使用T-SQL命令创建一个新表,使用一个复合列为主键,作为表的约束,并为其命名。
create table Employees6
(
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)
)
go
(2)使用T-SQL语句为表Employees表添加一个新列shenfenzheng,并为该列定义UNIQUE约束。
alter table Employees
add shenfenzheng varchar(40)
constraint AD_UK unique (shenfenzheng)
go
(3)创建新表student,只有号码和性别两列,性别只能包含男和女。
create table student
(号码char(6)not null,
性别char(2)not null
check(性别in('男','女'))
)
(4)向student表插入数据,性别列插入男和女以为的字符,查看发生的情况。
(5)创建Salary2,结构与Salary相同,但Salary2表不允许outcome列大于income 列。
create table Salary2
(EmployeeID char(6)not null,
InCome float not null,
OutCome float not null,
check(InCome>=OutCome)
)
(6)创建一个表Employees2表,只考虑学号、出生日期和部门号字段,出生日期必须晚于1980年1月1号,部门号只能在1~5之间。
create table Employees2
(
学号char(6)not null,
出生日期date not null check(出生日期>'1980-01-01'),
部门号char(8)not null check(部门号>=1 and部门号<=5)
)
(7)建立一个规则对象,限制值在0~20之间,然后把它绑定到employees表的workyear字段上。
create rule time_rule
as@time like'[0-2][0-9]'
go
exec sp_bindrule'time_rule','Employees.WorkYear'
Go
(8)删除上面建立的规则对象。
exec sp_unbindrule'Employees.WorkYear'
exec sp_unbindrule'time_rule'
go
drop rule time_rule
(9)创建一个表Salary3表(从表),它的列employeeid是外键,要引用salary 表(主表)中的主键employeeid值,要求当删除或修改主表上的主键列时,salary3表中的employeeid值也会随之变化。
create table Salary3
(
EmployeeID char(6)not null primary key,
InCome float not null,
OutCome float(8)not null,
foreign key(EmployeeID)
references Salary(EmployeeID)
on update cascade