實驗4:索引和視圖

實驗四 索引和視圖
一、實驗學時
2學時
二、實驗目的
(1)理解索引的概念與類型。
(2)掌握使用企業管理器創建與維護索引的方法。
(3)掌握T-SQL語句創建與維護索引的方法。
(4)理解視圖的概念。
(5)掌握視圖創建、更改的方法。
(6)掌握用視圖管理數據的方法。
三、實驗要求
(1)硬件設備:奔騰II或奔騰II以上計算機,局域網。
(2)軟件環境:WINDOWS 9X/NT、WINDOWS SERVER、WINDOWS XP、WINDOWS 7、SQL SERVER 2000/2005/2008中文版企業版或標準版。
(3)實驗課前預習,課後及時完成實驗內容。
(4)實驗過程及記錄按題目格式要求填寫代碼清單。
四、實驗內容
(一)索引
索引分爲兩種:聚簇索引和非聚簇索引。每張表只能有一個聚簇索引。創建索引時的缺省設置是非聚簇索引。
1.使用企業管理器創建、管理索引
(1)創建索引
1)爲Student表創建一個以Sno爲索引關鍵字的惟一聚簇索引。(若原已有,請刪除,索引名爲Sno_index)
(提示:選擇表後點擊鼠標右鍵,選“設計”,窗口空白區域點擊鼠標右鍵,選“索引/鍵”)
基本步驟:

2)爲Student表創建以Sname,Sex爲索引關鍵字的非聚簇索引(對Sname以升序來排列,Sex以降序排列,並設置填充因子爲70%)。索引名爲:SS_index。(提示:填充因子爲索引創建時索引裏的數據頁被填充的數量)
基本步驟:

(2)重命名索引
將索引文件Sno_index重新命名爲Sno_index1。
基本步驟:

(3)刪除索引
將索引文件Sno_index1刪除。
基本步驟:

2.使用T-SQL語句創建、管理索引
(1)創建索引
1)爲SC表創建一個非聚集索引Grade_index,索引關鍵字爲Grade,升序,填充因子爲80%。(提示:with fillfactor=)
T-SQL語句:
create nonclustered index Grade_index on SC(Grade asc)
with fillfactor=80;
2)爲SC表創建一個唯一性聚集索引SC_index,索引關鍵字爲Sno,Cno。
用create index命令創建SC_index索引。
T-SQL語句:
create unique clustered index SC_index on SC(Sno,Cno);
3)爲Course表創建一個非聚集索引CC_index,索引關鍵字爲Ccredit、Cname,前者按降序,後者按升序進行索引。
T-SQL語句:
create nonclustered index CC_index on Course(Ccredit desc,Cname asc);

(2)重命名索引
將CC_index索引改名爲CC_index1。
提示:使用sp_rename存儲過程
T-SQL語句:
exec sp_rename’Course.CC_index’ ,‘CC_index1’;
(3)刪除索引
將Grade_index索引刪除。
T-SQL語句:
drop index Grade_index on SC

(二)視圖
創建視圖是數據庫應用中的常見需求,可以使用企業管理器創建、管理視圖,也可以用T-SQL語言創建、管理視圖。
1.用企業管理器創建、管理視圖
(1)創建視圖
使用企業管理器在表Student上創建一個能查詢所在係爲“IS”的學生學號、姓名、性別信息的投影視圖。
1)依次進入企業管理器、數據庫、Stu_Course庫、視圖,並用鼠標右鍵單擊“視圖”。
2)在系統彈出的快捷菜單中單擊“新建視圖”,出現“新建視圖”窗口。
3)最上面的一個窗格用於添加創建視圖的基礎對象,在其上按鼠標右鍵,單擊快捷菜單中的“添加表”,將表Student添加到此窗格中,上面第二個窗格用於選擇進入視圖的列,分別選擇相應字段:學號、姓名、性別,設定Sdept的篩選條件:=‘IS’。在查詢條件窗格中將自動生成查詢語句,最後一個窗格爲視圖結果窗口。
4)單擊工具欄,執行按鈕“!”,觀察執行結果是否正確。若正確,則單擊“保存”按鈕,輸入文件名:stuview1,再單擊“確定”按鈕,視圖創建完成。

(2)修改視圖stuview1
將視圖stuview1的定義修改爲查詢所在係爲“MA”的學生學號、姓名、性別信息的投影視圖。
(提示:在企業管理器中選中視圖後->單擊右鍵->設計->進行修改。)
基本操作步驟:

(4)管理視圖中的數據
1)查看視圖stuview1中的數據。用鼠標右鍵單擊要管理的視圖stuview1,單擊“編輯”。(試運行即可,不寫步驟。)
2)將視圖stuview1中學號爲“200215125”的學生姓名由“張立”改爲“張華”。
(注:須點擊按鈕“!”進行修改確認。)
基本步驟:

3.用T-SQL語言創建、管理視圖
(1)創建視圖
1)創建一個名爲stuview2的水平視圖,從數據庫Stu_Course的Student表中查詢出性別爲“男”的所有學生的資料。並在創建視圖時使用with check option。(注:該子句用於強制視圖上執行的所有修改語句必須符合由Select語句where中的條件。)
T-SQL語句爲:
create view stuview2
as
select *
from Student
where Ssex=‘男’
with check option
2)創建一個名爲stuview3的投影視圖,從數據庫Stu_Course的Course表中查詢學分大於3的所有課程的課程號、課程名、學分。並在創建時對該視圖加密。(提示:用WITH ENCRYPTION關鍵子句,加在as與視圖名稱之間,且sp_helptext無法看到該視圖的定義腳本。)
T-SQL語句爲:
create view stuview3
with encryption
as
select Cno,Cname,Ccredit
from Course
where Ccredit>3
3)創建一個名爲stuview4的視圖,能檢索出每位選課學生的學號、姓名、課程名、成績。
T-SQL語句爲:
create view stuview4
as
select Student.Sno,Sname,Cname,Grade
from Student,Course,SC
where Student.Sno=SC.Sno and Course.Cno=SC.Cno
(2)查詢視圖的創建信息及視圖中的數據
查看視圖stuview2的定義腳本。(提示:sp_helptext)
結果爲:
sp_helptext ‘stuview2’

(3)修改視圖的定義
修改視圖stuview3使其從數據庫Stu_Course的Course表中查詢學分大於3的所有課程的課程號、課程名、學分。(提示:若視圖原具有加密保護,修改視圖時若未加WITH ENCRYPTION子句,則修改後的視圖不再加密。修改視圖請查閱幫助alter view關鍵字。)
T-SQL語句:

alter view stuview3
as
select Cno,Cname,Ccredit
from Course
where Ccredit>3
(4)視圖的更名與刪除
1)將視圖stuview4更名爲stuv4。
方法:(提示:sp_rename)
exec sp_rename’stuview4’,‘stuv4’

2)將視圖stuv4刪除。
T-SQL語句:
drop view stuv4

(5)管理視圖中的數據
1)從視圖stuview2查詢出姓名爲“李勇”的學生資料。
T-SQL語句:
select *
from stuview2
where Sname=‘李勇’

2)向視圖stuview2中插入一行數據。學號:200200001,姓名:趙軍,性別:男,年齡:20,所在系:MA。
T-SQL語句:
insert
into stuview2
values(‘200200001’,‘趙軍’,‘男’,20,‘MA’)

原student表中的內容有何變化?
在第一行增加了一個元組。

思考:如向視圖stuview2中插入一行數據。學號:200200002,姓名:趙靜,性別:女,年齡:20,所在系:MA。會出現什麼樣的結果?

數據受到影響,插不進去。
原Student表中的內容有何變化?
沒有任何變化。

3)修改視圖stuview2中的數據。
將stuview2中姓名爲“趙軍”同學的所在系改爲“IS”。
T-SQL語句:
update stuview2
set Sdept=‘IS’
where Sname=‘趙軍’

原student表中的內容有何變化?
沒有任何變化。

4)從視圖中stuview2將姓名爲“趙軍”同學刪除。
T-SQL語句:
delete
from stuview2
where Sname=‘趙軍’

原student表中的內容有何變化?
沒有任何變化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章