視圖教學(xué)課件_第1頁(yè)
視圖教學(xué)課件_第2頁(yè)
視圖教學(xué)課件_第3頁(yè)
視圖教學(xué)課件_第4頁(yè)
視圖教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

r

主要內(nèi)容

1視圖概述更

2創(chuàng)建視圖

3使用視圖的優(yōu)點(diǎn)和缺點(diǎn)

4創(chuàng)建視圖示例

5視圖信息的查看3及

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

7視圖數(shù)據(jù)的查詢、插入、修改與刪除

返回目錄

3.8.1視圖概念

■視圖是一種數(shù)據(jù)庫(kù)對(duì)象,是從一個(gè)或者多個(gè)數(shù)據(jù)表或視

圖中導(dǎo)出的虛表,視圖的結(jié)構(gòu)和數(shù)據(jù)是對(duì)數(shù)據(jù)表進(jìn)行查

詢的結(jié)果。

■視圖被定義后便存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò)視圖看到的數(shù)據(jù)

只是存放在基表中的數(shù)據(jù)。當(dāng)對(duì)通過(guò)視圖看到的數(shù)據(jù)進(jìn)

行修改時(shí),相應(yīng)的基表的數(shù)據(jù)也會(huì)發(fā)生變化,同時(shí),若

基表的數(shù)據(jù)發(fā)生變化,這種變化也會(huì)自動(dòng)地反映到視圖

中。

■視圖可以是一個(gè)數(shù)據(jù)表的一部分,也可以是多個(gè)基表的

聯(lián)合;視圖也可以由一個(gè)或多個(gè)其他視圖產(chǎn)生。

■一旦視圖定義后,就可以用select語(yǔ)句象對(duì)真實(shí)表一樣查

詢。

3

382創(chuàng)建視圖

■2.1使用Transact-SQL語(yǔ)句創(chuàng)建視圖

■1.創(chuàng)建視圖的SQL語(yǔ)句的語(yǔ)法形式

CREATEVIEW[<owner>.]view_name

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

[WITHENCRYPTION]

AS

select_statement

FROMtable_nameWHEREsearch_condition

[WITHCHECKOPTION]一

.其中:

?-viewname:為新創(chuàng)建的視圖指定的名字,視圖名稱必

須符合標(biāo)識(shí)符規(guī)則。

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

語(yǔ)而不指定列名。

4

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

?-selec^statement:選擇哪些列進(jìn)入視圖的SELECT語(yǔ)句。

?-WHEREsearch_condition:基表數(shù)據(jù)進(jìn)入視圖所應(yīng)滿足

的條件一

?"WITHCHECKOPTION:迫使通過(guò)視圖執(zhí)行的所有數(shù)

據(jù)修改語(yǔ)句必須符合視圖定義中設(shè)置的條件。

?-WITHENCRYPTION:對(duì)視圖的定義進(jìn)行加密。

■2.用SQL語(yǔ)句創(chuàng)建視圖的步驟

■在創(chuàng)建視圖時(shí),應(yīng)首先測(cè)試SELECT語(yǔ)句以確保能返回正確

的結(jié)果。創(chuàng)建視圖的步驟如下:

?①編寫用于創(chuàng)建視圖的SELECT語(yǔ)句。

?②對(duì)SELECT語(yǔ)句進(jìn)行測(cè)試。

■③檢查測(cè)試結(jié)果是否正確,是否和預(yù)期的一樣。

■④創(chuàng)建視圖。

5

■3.在創(chuàng)建視圖的時(shí)候,應(yīng)該考慮以下因素

?①在CREATEVIEW語(yǔ)句中,不能包括ORDERBY、

COMPUTE或者COMPUTEBY子句,也不能出現(xiàn)INTO

關(guān)鍵字。

?②創(chuàng)建視圖所參考基表的列數(shù)最多為1024列。

?③創(chuàng)建視圖不能參考臨時(shí)表。

?④在一個(gè)批處理語(yǔ)句中,CREATEVIEW語(yǔ)句不能和

其他Transact-SQL語(yǔ)句混合使用。

?⑤盡量避免使用外連接創(chuàng)建視圖。

6

工,r

■2.2使用SQLServerManagementStudio創(chuàng)建視圖

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

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

So

■f%SQLServerManagementStudio創(chuàng)建視圖的具體步驟

■1)首先進(jìn)入SQLServerManagementStudioo

■2)按順序展開(kāi)“數(shù)據(jù)庫(kù)”、要?jiǎng)?chuàng)建視圖所屬的數(shù)據(jù)庫(kù)、再

展開(kāi)“視圖”子節(jié)點(diǎn)。

■3)右邊“摘要”窗口顯示的是數(shù)據(jù)庫(kù)中已經(jīng)存在的視圖,

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

項(xiàng),系統(tǒng)彈出如圖9-1的“添加表”窗口,這個(gè)窗口用于為

新創(chuàng)建的視圖提供基礎(chǔ)數(shù)據(jù)。該窗口有三個(gè)選項(xiàng)卡,表、

視圖及函數(shù),這意味著可以以表、視圖及表值函數(shù)為基礎(chǔ)

數(shù)據(jù)創(chuàng)建新的視圖。

7

圖1創(chuàng)建視圖的窗口

4)點(diǎn)擊“添加”,選擇表student,再點(diǎn)擊“關(guān)閉”

系統(tǒng)呈現(xiàn)如圖2的視圖建立窗口。

8

■在SQL查詢條件窗格中輸入查詢條件語(yǔ)句:

SELECTstudentjd,student_name,classjd,sex

FROMstudentWHEREsex=1

■5)確認(rèn)結(jié)果正確后,點(diǎn)擊工具欄上的按鈕,保存當(dāng)前

創(chuàng)建的視圖,輸入視圖的名稱,點(diǎn)擊“確定”按鈕,一個(gè)

視圖也就創(chuàng)建完成了。

節(jié)置預(yù)

10

3.8.3使用視圖的優(yōu)點(diǎn)和缺點(diǎn)

■1.視圖的優(yōu)點(diǎn)

?視圖可以屏蔽數(shù)據(jù)的復(fù)雜性,簡(jiǎn)化用戶對(duì)數(shù)據(jù)庫(kù)的操作,

還可以使用視圖重新組織數(shù)據(jù)。

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

的數(shù)據(jù)集。

?安全保護(hù):視圖可以定制不同用戶對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限。

■2.視圖的缺點(diǎn)

?性能降低:

?修改的限制:

3.8.4創(chuàng)建視圖示例

■4.1創(chuàng)建水平視圖型

■4.2創(chuàng)建投影視圖2

?4.3創(chuàng)建聯(lián)合視圖*

■4.4創(chuàng)建包含集合函數(shù)的視圖

■4.5創(chuàng)建視圖的視圖*

12

4.1創(chuàng)建水平視圖

■視圖的常見(jiàn)用法是限制用戶只能夠存取表中的某些數(shù)據(jù)行,

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

【例1】在數(shù)據(jù)庫(kù)JWGL的表student上創(chuàng)建一個(gè)視圖

student_view1,視圖的數(shù)據(jù)包括班級(jí)號(hào)為七99402'或

'g994d3'所有學(xué)生的資料。

USEjwgl

GO

CREATEVIEWstudent_view1

AS

SELECT*FROMstudent

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

13

4.2創(chuàng)建投影視圖

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

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

【例2】創(chuàng)建一個(gè)名為“studdent_view2”的視圖,它從數(shù)據(jù)庫(kù)

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

性別、家庭住址等資料。

USEjwgl

GO

CREATEVIEWstudent_view2

AS

SELECTstudentjdAS學(xué)號(hào),student_nameAS姓名,

sexAS性另U,class_id班級(jí),home_addrAS家庭

住址,entrance_dateAS入學(xué)時(shí)間,birthAS出生卒月

FROMstudent

WHEREsex=1WITHCHECKOPTION

14

4.3創(chuàng)建聯(lián)合視圖

■使用視圖的一個(gè)原因是簡(jiǎn)化多表查詢,可以生成從多個(gè)表中提取

數(shù)據(jù)的聯(lián)合視圖(joinedView)把查詢結(jié)果表示為一個(gè)單獨(dú)的“可

見(jiàn)表。

【例3】創(chuàng)建一個(gè)名為“student_view3”的視圖,它是由表course、

book及classcourse創(chuàng)建的二葉顯示“g99402”班所開(kāi)課程的課

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

USEjwgl

GO

CREATEVIEWstudent_view3

WITHENCRYPTION/*力口密視圖7

AS

SELECTcourse.course_nameAS課程名,book.book_nameAS書(shū)名,

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創(chuàng)建包含集合函數(shù)的視圖

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

總數(shù)據(jù)放到一人“可見(jiàn)”的表中,允許用戶對(duì)它們做進(jìn)一步的查

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

數(shù)中,要么包含在GROUPBY子句中。

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

為基表,創(chuàng)建一個(gè)名為“studentsumview4\能顯示所看學(xué)至

學(xué)號(hào)和總成績(jī)的視圖。一一

USEjwgl

GO

CREATEVIEWstudent_sum_view4(學(xué)號(hào),總成績(jī))

AS

SELECTstudentjd,sum(grade)FROMstudent_course

GROUPBYstudentjd-

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

本表中的行不是一一對(duì)應(yīng)的,它是一些行數(shù)據(jù)的匯總,因此,不

能通過(guò)視圖來(lái)修改數(shù)據(jù)。伐

4.5創(chuàng)建視圖的視圖

■前面創(chuàng)建的視圖都是在表的基礎(chǔ)上創(chuàng)建的,在視圖的基礎(chǔ)上

還可以創(chuàng)建視圖。

【例5】從視圖student_view1創(chuàng)建一個(gè)名為

Ustudent_view5\能查詢出班級(jí)名為“g99402”的所有學(xué)

生資料的視圖。

USEjwgl

GO

CREATEVIEWstudent_view5

AS

SELECT*FROMstudent_view1

WHEREclassjd='g99402,

GO17

3.8.5查看視圖信息

■使用系統(tǒng)存儲(chǔ)過(guò)程查看視圖信息

?sp_help數(shù)據(jù)庫(kù)對(duì)象名稱

?sp_helptext視圖(觸發(fā)器、存儲(chǔ)過(guò)程)

?spdepends數(shù)據(jù)庫(kù)對(duì)象名稱

■1.使用系統(tǒng)存儲(chǔ)過(guò)程

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

sp_helpstudent_view1

?②杳看視圖的定義腳本

sp_helptextstudent_view1

■③查看數(shù)據(jù)的來(lái)源一

sp_dependsstudent_view1

■2.使用SQLServerManagementStudio查看視

(P164),

節(jié)及2

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

■6.1視圖的修改:將

■6.2視圖的刪除型

■6.3視圖的重命名:淤

19

6.1視圖的修改

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

■2.使用Transact-SQL語(yǔ)句修改視圖

ALTERVIEWview_name

[(column[,…n])]

[WITHENCRYPTION]

AS

select_statement

[WITHCHECKOPTION]-

■在以上語(yǔ)句的語(yǔ)法中:

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

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

?-WITHCHECKOPTION:迫使通過(guò)視圖進(jìn)行數(shù)據(jù)修改的

所有語(yǔ)句必須符合視圖定義中設(shè)置的條件。

20

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

?-WITHENCRYPTION:對(duì)包含創(chuàng)建視圖的SQL腳本進(jìn)行

加密。

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

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

USEjwgl

GO

ALTERVIEWstudent_view1

AS

SELECT*FROMstudent

WHEREsex=0

21

6.2視圖的刪除

■刪除一個(gè)視圖,就是刪除視圖的定義及其賦予的全部權(quán)限,而

原先通過(guò)視圖獲得的數(shù)據(jù)并沒(méi)有被刪除。刪除視圖參考表的

時(shí)候,視圖不會(huì)被刪除,視圖必須被單獨(dú)刪除。刪除視圖有

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

二是用DROPVIEW語(yǔ)句刪除。

■1.用DROPVIEW語(yǔ)句刪除視圖

■DROPVIEW語(yǔ)句的語(yǔ)法形式如下:

DROPVIEWview_namel,view_name2,...

■使用DROPVIEW語(yǔ)而可以一次冊(cè)森多個(gè)視圖。下面的例子

是將student_view5視圖刪除。

DROPVIEWstudent_view5

22

■2.使用SQLServerManagementStudio刪除視圖

?①進(jìn)入SQLServerManagementStudio,展開(kāi)

相應(yīng)的服務(wù)器組和相應(yīng)的服務(wù)器節(jié)點(diǎn)。

?②展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),然后展開(kāi)視圖所屬的

數(shù)據(jù)庫(kù),再展開(kāi)“視圖”子節(jié)點(diǎn)。

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

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

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

選定的視圖刪除。

23

6.3視圖的重命名

■視圖創(chuàng)建后,有時(shí)需要對(duì)視圖重命名,對(duì)視圖重命

名有兩種方法:一是用SQLServerManagement

Studio,二是用系統(tǒng)存儲(chǔ)過(guò)程spjename。

■1.使用系統(tǒng)存儲(chǔ)過(guò)程重命名視圖

■使用系統(tǒng)存儲(chǔ)過(guò)程sp_rename對(duì)視圖重命名的語(yǔ)法

形式是:

sp_renameold_view_name,new_view_name

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

new_student_view3:

sp_renamestudent_view3,new_student_view3

24

■2.使用SQLServerManagementStudio對(duì)視圖重命名

■使用SQLServerManagementStudio對(duì)視圖重命名

的步驟如下:

?@iSASQLServerManagementStudio,展開(kāi)相應(yīng)的服

務(wù)器組和相應(yīng)的服務(wù)器節(jié)點(diǎn)。

?②展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),然后展開(kāi)視圖所屬的數(shù)據(jù)庫(kù),

再展開(kāi)“視圖”子節(jié)點(diǎn)。

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

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

?④此時(shí),視圖名稱變?yōu)榭删庉嫚顟B(tài),輸入新的視圖名稱

并按〈Enter〉鍵即可。

25

3.8.7視圖數(shù)據(jù)的查詢、插入、修改與刪除

7.1用T-SQL語(yǔ)句進(jìn)行視圖數(shù)據(jù)的查詢、插入、修改與

刪除

■使用T-SQL語(yǔ)句可以進(jìn)行視圖數(shù)據(jù)的查詢、插入、修改與刪

除。其語(yǔ)法形式和對(duì)表中數(shù)據(jù)的查詢、插入、修改與刪除操作

幾乎一樣。

■1.從視圖中查詢數(shù)據(jù)

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

生資料。

USEjwgl

GO

SELECT*FROMstudent_view2

WHERE姓名+錢利,

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

26

■2.向視圖插入數(shù)據(jù)

【例8】向視圖student_view2中插入一行數(shù)據(jù)。學(xué)號(hào)、姓

名、性別、班級(jí)、家庭住址'入學(xué)時(shí)間,出生年月分別是

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

北路10號(hào)",M999-09-01','1985-01-09'。

USEjwgl

GO

INSERTINTOstudent_view2

(學(xué)號(hào),姓名,性別,班級(jí),家庭住址,入學(xué)時(shí)間,出生年月)

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

1999-09-0171985-01-09,)

27

■3.修改視圖中的數(shù)據(jù)

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

“揚(yáng)州市南京路8號(hào)歹

USEjwgl

GO

UPDATEstudent_view2

SET家庭住址+痂W市南京路8號(hào)’

WHERE姓名='錢利,

■4.刪除視圖中的數(shù)據(jù)

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

USEjwgl

GO

DELETEFROMstudent_view2

WHERE姓名㈢錢利,一

28

工二I

■7.2用SQLServerManagementStudio進(jìn)行視圖數(shù)

據(jù)的插入、修改與刪除

■使用SQLServerManagementStudio對(duì)視圖插入、修改與

刪除數(shù)據(jù)

?@iSASQLServerManagementStudio,展開(kāi)相應(yīng)的

服務(wù)器組和相應(yīng)的服務(wù)器節(jié)點(diǎn)。

?②展開(kāi)“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),然后展開(kāi)視圖所屬的數(shù)據(jù)庫(kù),

再展開(kāi)“視圖”子節(jié)點(diǎn)。

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

“返回所有行”,便會(huì)出現(xiàn)圖9-3的視圖數(shù)據(jù)顯示窗口。

?插入數(shù)據(jù):直接在視圖的最后一行進(jìn)行數(shù)據(jù)的插入。

?修改數(shù)據(jù):直接點(diǎn)擊要修改的數(shù)據(jù)進(jìn)行修改。

■刪除數(shù)據(jù):右擊圖9-3的窗口的要?jiǎng)h除數(shù)據(jù)行的最左列,

在彈出的快捷菜單上點(diǎn)擊“刪除”

?④操作完成后,點(diǎn)擊工具欄上的“!”,確認(rèn)視圖數(shù)據(jù)

的修改。

29

■7.3修改視圖數(shù)據(jù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論