實
驗
報
告
課程名稱:
SQL
Server
數(shù)據(jù)庫基礎(chǔ)
任課教師:
池宗琳
實驗名稱:
視圖、規(guī)則和索引的使用
年級、專業(yè):
2018級電子信息工程
學(xué)
號:
20181060199
姓
名:
茍誠
日期:
2019
年
月
日
云南大學(xué)
信息學(xué)院
一、實驗?zāi)康?、掌握視圖的創(chuàng)建、修改和刪除操作
2、掌握規(guī)則的創(chuàng)建、綁定、解除和刪除操作
3、掌握索引的創(chuàng)建、修改和刪除操作
二、實驗內(nèi)容、方法、步驟和實驗結(jié)果與分析
(一)視圖
1.創(chuàng)建視圖view1,使該視圖中包含HrSystem數(shù)據(jù)庫中一個員工的明細(xì)信息(視圖中的列名全部使用中文)。
use
HrSystem
go
create
view
view1
as
select
e.Emp_id
as
員工編號,e.Emp_name
as
員工姓名,e.Sex
as
性別,e.Title
as
職務(wù),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題創(chuàng)建的視圖view1的所有數(shù)據(jù)。
use
HrSystem
go
select
all
*
from
view1
go
3.利用第1題創(chuàng)建的視圖view1,列出視圖中所有姓李的員工的所有信息。
use
HrSystem
go
select
all
*
from
view1
where
員工姓名='李%'
go
4.使用ALTER
VIEW修改第1題創(chuàng)建的視圖view1,使其只包含所有員工的姓名、職務(wù)和部門三列(視圖中的列名全部使用中文)。
use
HrSystem
go
alter
view
view1
as
select
e.Emp_name
as
員工姓名,e.Title
as
職務(wù),d.Dep_name
as
部門名字
from
Employees
e
inner
join
Departments
d
on
e.Dep_id
=d.Dep_id
go
5.刪除以上創(chuàng)建的視圖view1。
use
HrSystem
go
drop
view
view1
go
(一)規(guī)則
以下操作均針對數(shù)據(jù)庫HrSystem。
1.使用CREATE
RULE語句創(chuàng)建規(guī)則SexRule,指定變量@sex的取值只能為‘男’或‘女’。
use
HrSystem
go
create
rule
SexRule
as
@sex
in
('男','女')
go
2.完成后,在對象資源管理器中展開數(shù)據(jù)庫HrSystem->“可編程性”->“規(guī)則”,確認(rèn)可以看到規(guī)則SexRule。
3.使用存儲過程sp_bindrule可以將規(guī)則SexRule綁定到表Employees的列Sex上。
use
Hrsystem
go
exec
sp_bindrule
'SexRule','Employees.Sex'
go
4.執(zhí)行下面的INSERT語句,向表Employees中插入一條記錄。
use
Hrsystem
go
insert
into
Employees(Emp_name,Sex,Title,Wage,IdCard,Dep_id)
values('小李','無','職員',10000,'110123xxxx',1)
go
確認(rèn)是否可以成功執(zhí)行INSERT語句,為什么?
答:不可以,因為插入的記錄中Sex的值與創(chuàng)建的規(guī)則發(fā)生沖突。
5.使用存儲過程sp_unbindrule取消表Employees的列Sex上綁定的規(guī)則。成功后再執(zhí)行第4步中的INSERT語句,確認(rèn)是否可以成功執(zhí)行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
可以,因為表列與規(guī)則之間的綁定已經(jīng)解除,列Sex與規(guī)則SexRule就不會發(fā)生沖突
6.使用DROP
RULE刪除規(guī)則SexRule。完成后,在對象資源管理器中展開數(shù)據(jù)庫HrSystem->“可編程性”->“規(guī)則”,確認(rèn)是否可以看到規(guī)則SexRule。
USE
HrSystem
go
DROP
RULE
SexRule
go
(二)索引
執(zhí)行以下語句,利用數(shù)據(jù)庫HrSystem的表Employees產(chǎn)生一個新表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題創(chuàng)建的索引name_ind。
use
Hrsystem
drop
index
emp.name_ind
三、實驗小結(jié)【對自己而言,通過實驗學(xué)到的關(guān)鍵技術(shù)方法】
通過這次實驗,我學(xué)會使用和建立視圖,規(guī)則和索引,也學(xué)會了檢查建立查詢時候的一些錯誤和修改方法。通過了這次實驗,我又進(jìn)一步學(xué)會了對于SQL數(shù)據(jù)庫的一些基本操作,下來課后,我也要進(jìn)一步完善自己對于SQL語句的熟練程度,更有助于自己對SQL的學(xué)習(xí)。