視圖教學課件_第1頁
視圖教學課件_第2頁
視圖教學課件_第3頁
視圖教學課件_第4頁
視圖教學課件_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

r

主要內容

1視圖概述更

2創建視圖

3使用視圖的優點和缺點

4創建視圖示例

5視圖信息的查看3及

6視圖的修改、刪除與重命名:爐

7視圖數據的查詢、插入、修改與刪除

返回目錄

3.8.1視圖概念

■視圖是一種數據庫對象,是從一個或者多個數據表或視

圖中導出的虛表,視圖的結構和數據是對數據表進行查

詢的結果。

■視圖被定義后便存儲在數據庫中,通過視圖看到的數據

只是存放在基表中的數據。當對通過視圖看到的數據進

行修改時,相應的基表的數據也會發生變化,同時,若

基表的數據發生變化,這種變化也會自動地反映到視圖

中。

■視圖可以是一個數據表的一部分,也可以是多個基表的

聯合;視圖也可以由一個或多個其他視圖產生。

■一旦視圖定義后,就可以用select語句象對真實表一樣查

詢。

3

382創建視圖

■2.1使用Transact-SQL語句創建視圖

■1.創建視圖的SQL語句的語法形式

CREATEVIEW[<owner>.]view_name

[(column_name[,...n])]-

[WITHENCRYPTION]

AS

select_statement

FROMtable_nameWHEREsearch_condition

[WITHCHECKOPTION]一

.其中:

?-viewname:為新創建的視圖指定的名字,視圖名稱必

須符合標識符規則。

?-columnname:在視圖中包含的列名也可以在SELECT

語而不指定列名。

4

?-table_name:視圖基表的名字。

?-selec^statement:選擇哪些列進入視圖的SELECT語句。

?-WHEREsearch_condition:基表數據進入視圖所應滿足

的條件一

?"WITHCHECKOPTION:迫使通過視圖執行的所有數

據修改語句必須符合視圖定義中設置的條件。

?-WITHENCRYPTION:對視圖的定義進行加密。

■2.用SQL語句創建視圖的步驟

■在創建視圖時,應首先測試SELECT語句以確保能返回正確

的結果。創建視圖的步驟如下:

?①編寫用于創建視圖的SELECT語句。

?②對SELECT語句進行測試。

■③檢查測試結果是否正確,是否和預期的一樣。

■④創建視圖。

5

■3.在創建視圖的時候,應該考慮以下因素

?①在CREATEVIEW語句中,不能包括ORDERBY、

COMPUTE或者COMPUTEBY子句,也不能出現INTO

關鍵字。

?②創建視圖所參考基表的列數最多為1024列。

?③創建視圖不能參考臨時表。

?④在一個批處理語句中,CREATEVIEW語句不能和

其他Transact-SQL語句混合使用。

?⑤盡量避免使用外連接創建視圖。

6

工,r

■2.2使用SQLServerManagementStudio創建視圖

■假設要從student表中建立一個性別為“男”、包含

student_id>student_name>class_id>sex四列信息的視

So

■f%SQLServerManagementStudio創建視圖的具體步驟

■1)首先進入SQLServerManagementStudioo

■2)按順序展開“數據庫”、要創建視圖所屬的數據庫、再

展開“視圖”子節點。

■3)右邊“摘要”窗口顯示的是數據庫中已經存在的視圖,

右擊窗口的空白處,在彈出的快捷菜單上選擇“新建視圖”

項,系統彈出如圖9-1的“添加表”窗口,這個窗口用于為

新創建的視圖提供基礎數據。該窗口有三個選項卡,表、

視圖及函數,這意味著可以以表、視圖及表值函數為基礎

數據創建新的視圖。

7

圖1創建視圖的窗口

4)點擊“添加”,選擇表student,再點擊“關閉”

系統呈現如圖2的視圖建立窗口。

8

■在SQL查詢條件窗格中輸入查詢條件語句:

SELECTstudentjd,student_name,classjd,sex

FROMstudentWHEREsex=1

■5)確認結果正確后,點擊工具欄上的按鈕,保存當前

創建的視圖,輸入視圖的名稱,點擊“確定”按鈕,一個

視圖也就創建完成了。

節置預

10

3.8.3使用視圖的優點和缺點

■1.視圖的優點

?視圖可以屏蔽數據的復雜性,簡化用戶對數據庫的操作,

還可以使用視圖重新組織數據。

?視圖可以讓不同的用戶以不同的方式看到不同或者相同

的數據集。

?安全保護:視圖可以定制不同用戶對數據的訪問權限。

■2.視圖的缺點

?性能降低:

?修改的限制:

3.8.4創建視圖示例

■4.1創建水平視圖型

■4.2創建投影視圖2

?4.3創建聯合視圖*

■4.4創建包含集合函數的視圖

■4.5創建視圖的視圖*

12

4.1創建水平視圖

■視圖的常見用法是限制用戶只能夠存取表中的某些數據行,

用這種方法產生的視圖稱為水平視圖,即表中行的子集。

【例1】在數據庫JWGL的表student上創建一個視圖

student_view1,視圖的數據包括班級號為七99402'或

'g994d3'所有學生的資料。

USEjwgl

GO

CREATEVIEWstudent_view1

AS

SELECT*FROMstudent

WHERE(classjd='g99402'ORclassjd='g99403')

13

4.2創建投影視圖

■如果限制用戶只能存取表中的部分列的數據,那么,使用這

種方法創建的視圖就稱為投影視圖,即表中列的子集。

【例2】創建一個名為“studdent_view2”的視圖,它從數據庫

JWGL的student表中查詢出性別為“男”的所有學生的姓名、

性別、家庭住址等資料。

USEjwgl

GO

CREATEVIEWstudent_view2

AS

SELECTstudentjdAS學號,student_nameAS姓名,

sexAS性另U,class_id班級,home_addrAS家庭

住址,entrance_dateAS入學時間,birthAS出生卒月

FROMstudent

WHEREsex=1WITHCHECKOPTION

14

4.3創建聯合視圖

■使用視圖的一個原因是簡化多表查詢,可以生成從多個表中提取

數據的聯合視圖(joinedView)把查詢結果表示為一個單獨的“可

見表。

【例3】創建一個名為“student_view3”的視圖,它是由表course、

book及classcourse創建的二葉顯示“g99402”班所開課程的課

程名、所用教材的教材名、出版社及作髻的視圖。

USEjwgl

GO

CREATEVIEWstudent_view3

WITHENCRYPTION/*力口密視圖7

AS

SELECTcourse.course_nameAS課程名,book.book_nameAS書名,

book.publish_companyAS出版社,book.authorAS作者

FROMcourse,book,class_course

WHERE(course.bookjd=book.bookJdAND

class_course.courselid=course.coiirsejd)AND

(class^course.classjid='g99402')一

15

44創建包含集合函數的視圖

■在視圖定義中可以包含GROUPBY和集合函數,從而將這些匯

總數據放到一人“可見”的表中,允許用戶對它們做進一步的查

葡。要注意,由現在SELECT子句中的歹。名,要么苞含在集合函

數中,要么包含在GROUPBY子句中。

【例4】使用集合函數SUM和GROUPBY子句以studentcourse表

為基表,創建一個名為“studentsumview4\能顯示所看學至

學號和總成績的視圖。一一

USEjwgl

GO

CREATEVIEWstudent_sum_view4(學號,總成績)

AS

SELECTstudentjd,sum(grade)FROMstudent_course

GROUPBYstudentjd-

注意:與水平視圖和投影視圖不同,本例產生的視圖中的行與基

本表中的行不是一一對應的,它是一些行數據的匯總,因此,不

能通過視圖來修改數據。伐

4.5創建視圖的視圖

■前面創建的視圖都是在表的基礎上創建的,在視圖的基礎上

還可以創建視圖。

【例5】從視圖student_view1創建一個名為

Ustudent_view5\能查詢出班級名為“g99402”的所有學

生資料的視圖。

USEjwgl

GO

CREATEVIEWstudent_view5

AS

SELECT*FROMstudent_view1

WHEREclassjd='g99402,

GO17

3.8.5查看視圖信息

■使用系統存儲過程查看視圖信息

?sp_help數據庫對象名稱

?sp_helptext視圖(觸發器、存儲過程)

?spdepends數據庫對象名稱

■1.使用系統存儲過程

?①查看視圖的名稱、擁有者及創建日期等信息

sp_helpstudent_view1

?②杳看視圖的定義腳本

sp_helptextstudent_view1

■③查看數據的來源一

sp_dependsstudent_view1

■2.使用SQLServerManagementStudio查看視

(P164),

節及2

3.8.6視圖的修改、刪除與重命名

■6.1視圖的修改:將

■6.2視圖的刪除型

■6.3視圖的重命名:淤

19

6.1視圖的修改

■1.使用SQLServerManagementStudio修改視圖(略)

■2.使用Transact-SQL語句修改視圖

ALTERVIEWview_name

[(column[,…n])]

[WITHENCRYPTION]

AS

select_statement

[WITHCHECKOPTION]-

■在以上語句的語法中:

?-view_name:被修改的視圖的名字。

?-column_name:在視圖中包含的列名。

?-WITHCHECKOPTION:迫使通過視圖進行數據修改的

所有語句必須符合視圖定義中設置的條件。

20

?-table_name:視圖基表的名字。

?-WITHENCRYPTION:對包含創建視圖的SQL腳本進行

加密。

【例6】修改視圖student_view1的定義,使其從student表中查

詢出性別為“女”的所有學生的資料。

USEjwgl

GO

ALTERVIEWstudent_view1

AS

SELECT*FROMstudent

WHEREsex=0

21

6.2視圖的刪除

■刪除一個視圖,就是刪除視圖的定義及其賦予的全部權限,而

原先通過視圖獲得的數據并沒有被刪除。刪除視圖參考表的

時候,視圖不會被刪除,視圖必須被單獨刪除。刪除視圖有

兩種方法,一是使用SQLServerManagementStudio刪除,

二是用DROPVIEW語句刪除。

■1.用DROPVIEW語句刪除視圖

■DROPVIEW語句的語法形式如下:

DROPVIEWview_namel,view_name2,...

■使用DROPVIEW語而可以一次冊森多個視圖。下面的例子

是將student_view5視圖刪除。

DROPVIEWstudent_view5

22

■2.使用SQLServerManagementStudio刪除視圖

?①進入SQLServerManagementStudio,展開

相應的服務器組和相應的服務器節點。

?②展開“數據庫”節點,然后展開視圖所屬的

數據庫,再展開“視圖”子節點。

?③在右側的視圖資料顯示窗口上,右擊視圖

student__view1,在彈出的快捷菜單中,單擊“刪

除”菜簞命令,再單擊“全部除去”按鈕即可將

選定的視圖刪除。

23

6.3視圖的重命名

■視圖創建后,有時需要對視圖重命名,對視圖重命

名有兩種方法:一是用SQLServerManagement

Studio,二是用系統存儲過程spjename。

■1.使用系統存儲過程重命名視圖

■使用系統存儲過程sp_rename對視圖重命名的語法

形式是:

sp_renameold_view_name,new_view_name

下面示例是將視圖student_view3重命名為

new_student_view3:

sp_renamestudent_view3,new_student_view3

24

■2.使用SQLServerManagementStudio對視圖重命名

■使用SQLServerManagementStudio對視圖重命名

的步驟如下:

?@iSASQLServerManagementStudio,展開相應的服

務器組和相應的服務器節點。

?②展開“數據庫”節點,然后展開視圖所屬的數據庫,

再展開“視圖”子節點。

?③在右側的視圖資料顯示窗口上,右擊要重命名的視圖,

在彈出的快捷菜單中,單擊“重命名”菜單命令。

?④此時,視圖名稱變為可編輯狀態,輸入新的視圖名稱

并按〈Enter〉鍵即可。

25

3.8.7視圖數據的查詢、插入、修改與刪除

7.1用T-SQL語句進行視圖數據的查詢、插入、修改與

刪除

■使用T-SQL語句可以進行視圖數據的查詢、插入、修改與刪

除。其語法形式和對表中數據的查詢、插入、修改與刪除操作

幾乎一樣。

■1.從視圖中查詢數據

【例7】從視圖student_view2中查詢出學生姓名為“錢利”的學

生資料。

USEjwgl

GO

SELECT*FROMstudent_view2

WHERE姓名+錢利,

想一想,為什么WHERE子句不能用student_name=,錢利,?

26

■2.向視圖插入數據

【例8】向視圖student_view2中插入一行數據。學號、姓

名、性別、班級、家庭住址'入學時間,出生年月分別是

“g9940210",“趙青""男"Jg99402”,“南京中山

北路10號",M999-09-01','1985-01-09'。

USEjwgl

GO

INSERTINTOstudent_view2

(學號,姓名,性別,班級,家庭住址,入學時間,出生年月)

VALUES('g9940210','趙青/,'g99402','南京中山北路

1999-09-0171985-01-09,)

27

■3.修改視圖中的數據

【例9】將視圖studentview2中“錢利”同學的家庭住址改為

“揚州市南京路8號歹

USEjwgl

GO

UPDATEstudent_view2

SET家庭住址+痂W市南京路8號’

WHERE姓名='錢利,

■4.刪除視圖中的數據

【例10】將視圖student_view2中“錢利”同學的資料刪除

USEjwgl

GO

DELETEFROMstudent_view2

WHERE姓名㈢錢利,一

28

工二I

■7.2用SQLServerManagementStudio進行視圖數

據的插入、修改與刪除

■使用SQLServerManagementStudio對視圖插入、修改與

刪除數據

?@iSASQLServerManagementStudio,展開相應的

服務器組和相應的服務器節點。

?②展開“數據庫”節點,然后展開視圖所屬的數據庫,

再展開“視圖”子節點。

?③右擊要操作的視圖名稱,分別單擊“打開視圖”、

“返回所有行”,便會出現圖9-3的視圖數據顯示窗口。

?插入數據:直接在視圖的最后一行進行數據的插入。

?修改數據:直接點擊要修改的數據進行修改。

■刪除數據:右擊圖9-3的窗口的要刪除數據行的最左列,

在彈出的快捷菜單上點擊“刪除”

?④操作完成后,點擊工具欄上的“!”,確認視圖數據

的修改。

29

■7.3修改視圖數據

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論