实
验
报
告
课程名称:
SQL
Server
数据库基础
任课教师:
池宗琳
实验名称:
视图、规则和索引的使用
年级、专业:
2018级电子信息工程
学
号:
20181060199
姓
名:
苟诚
日期:
2019
年
月
日
云南大学
信息学院
一、实验目的1、掌握视图的创建、修改和删除操作
2、掌握规则的创建、绑定、解除和删除操作
3、掌握索引的创建、修改和删除操作
二、实验内容、方法、步骤和实验结果与分析
(一)视图
1.创建视图view1,使该视图中包含HrSystem数据库中一个员工的明细信息(视图中的列名全部使用中文)。
use
HrSystem
go
create
view
view1
as
select
e.Emp_id
as
员工编号,e.Emp_name
as
员工姓名,e.Sex
as
性别,e.Title
as
职务,e.Wage
as
工资,e.IdCard
as
身份证,d.Dep_id
as
部门编号
from
Employees
e
inner
join
Departments
d
on
e.Dep_id
=d.Dep_id
2.显示第1题创建的视图view1的所有数据。
use
HrSystem
go
select
all
*
from
view1
go
3.利用第1题创建的视图view1,列出视图中所有姓李的员工的所有信息。
use
HrSystem
go
select
all
*
from
view1
where
员工姓名='李%'
go
4.使用ALTER
VIEW修改第1题创建的视图view1,使其只包含所有员工的姓名、职务和部门三列(视图中的列名全部使用中文)。
use
HrSystem
go
alter
view
view1
as
select
e.Emp_name
as
员工姓名,e.Title
as
职务,d.Dep_name
as
部门名字
from
Employees
e
inner
join
Departments
d
on
e.Dep_id
=d.Dep_id
go
5.删除以上创建的视图view1。
use
HrSystem
go
drop
view
view1
go
(一)规则
以下操作均针对数据库HrSystem。
1.使用CREATE
RULE语句创建规则SexRule,指定变量@sex的取值只能为‘男’或‘女’。
use
HrSystem
go
create
rule
SexRule
as
@sex
in
('男','女')
go
2.完成后,在对象资源管理器中展开数据库HrSystem->“可编程性”->“规则”,确认可以看到规则SexRule。
3.使用存储过程sp_bindrule可以将规则SexRule绑定到表Employees的列Sex上。
use
Hrsystem
go
exec
sp_bindrule
'SexRule','Employees.Sex'
go
4.执行下面的INSERT语句,向表Employees中插入一条记录。
use
Hrsystem
go
insert
into
Employees(Emp_name,Sex,Title,Wage,IdCard,Dep_id)
values('小李','无','职员',10000,'110123xxxx',1)
go
确认是否可以成功执行INSERT语句,为什么?
答:不可以,因为插入的记录中Sex的值与创建的规则发生冲突。
5.使用存储过程sp_unbindrule取消表Employees的列Sex上绑定的规则。成功后再执行第4步中的INSERT语句,确认是否可以成功执行INSERT语句,为什么?
use
Hrsystem
go
exec
sp_unbindrule
'Employees.Sex'
go
use
Hrsystem
go
insert
into
Employees(Emp_name,Sex,Title,Wage,IdCard,Dep_id)
values('小李','无','职员',10000,'110123xxxx',1)
go
可以,因为表列与规则之间的绑定已经解除,列Sex与规则SexRule就不会发生冲突
6.使用DROP
RULE删除规则SexRule。完成后,在对象资源管理器中展开数据库HrSystem->“可编程性”->“规则”,确认是否可以看到规则SexRule。
USE
HrSystem
go
DROP
RULE
SexRule
go
(二)索引
执行以下语句,利用数据库HrSystem的表Employees产生一个新表emp,该新表包含了表Employees中的所有记录。
use
Hrsystem
select
*
into
emp
from
Employees
1.在新表emp上建立一个唯一聚集索引,索引名称为name_ind,索引字段为Emp_name。
use
Hrsystem
go
create
unique
nonclustered
index
[name_ind]
on
[dbo].[emp](Emp_name)
go
2.使用SQL
Server
Management
Studio查看索引name_ind的属性信息。
3.使用DROP
INDEX语句删除第1题创建的索引name_ind。
use
Hrsystem
drop
index
emp.name_ind
三、实验小结【对自己而言,通过实验学到的关键技术方法】
通过这次实验,我学会使用和建立视图,规则和索引,也学会了检查建立查询时候的一些错误和修改方法。通过了这次实验,我又进一步学会了对于SQL数据库的一些基本操作,下来课后,我也要进一步完善自己对于SQL语句的熟练程度,更有助于自己对SQL的学习。