SQL Server視圖的創(chuàng)建、修改和刪除
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
1、創(chuàng)建: 用戶可以在自己的模式中創(chuàng)建視圖,只要具有CREATE VIEW這個(gè)系統(tǒng)權(quán)限即可。如果希望在其他用戶的模式中創(chuàng)建視圖,則需要具有CREATE ANY VIEW系統(tǒng)權(quán)限。如果一個(gè)視圖的基表是其他用戶模式中的對(duì)象,那么當(dāng)前用戶需要具有對(duì)這個(gè)基表的SELECT權(quán)限。 創(chuàng)建視圖的命令是CREATE VIEW,這條命令的格式為: CREATE VIEW 視圖名 AS SELECT語(yǔ)句 WITH READ ONLY WITH CHECK OPTION; 其中最后兩個(gè)選項(xiàng)是可選的,其中“WITH READ ONLY”限定對(duì)視圖只能進(jìn)行查詢操作,不能進(jìn)行DML操作。“WITH CHECK OPTION”限定DML操作必須滿足一定的條件。 例如,下面的語(yǔ)句創(chuàng)建視圖view_1,它所代表的操作是查詢員工表中部門30的員工姓名、工資和獎(jiǎng)金。 SQL> CREATE VIEW view_1 AS SELECT ename,sal,comm FROM emp WHERE deptno=30; 視圖view_2所代表的操作是查詢部門20和30中工資大于2000元的員工姓名、工資和獎(jiǎng)金。創(chuàng)建這個(gè)視圖的CREATE語(yǔ)句為: SQL> CREATE VIEW view_2 AS SELECT ename,sal,comm FROM emp WHERE (deptno=30 or deptno=20) and sal>2000 視圖被創(chuàng)建之后,可以通過(guò)DESC命令查看視圖的結(jié)構(gòu)。查看視圖結(jié)構(gòu)的方法與查看表的方法相同,查看的結(jié)果是列出視圖中各列的定義。 視圖的結(jié)構(gòu)是在執(zhí)行CREATE VIEW語(yǔ)句創(chuàng)建視圖時(shí)確定的,在默認(rèn)情況下,列的名稱與SELECT之后基表的列名相同,數(shù)據(jù)類型和是否為空也繼承了基表中的相應(yīng)列。如果希望視圖中的各列使用不同的名字,那么在創(chuàng)建視圖時(shí),在視圖的名稱之后應(yīng)該指定各列的名稱。例如,下面的語(yǔ)句重新創(chuàng)建視圖view_1,并為這個(gè)視圖指定了不同的名稱。 CREATE VIEW view_1(name,salary,comm1) AS SELECT ename,sal,comm FROM emp WHERE deptno=30; 如果執(zhí)行DESC命令查看視圖view_1的結(jié)構(gòu),我們將發(fā)現(xiàn)視圖中各列的名稱就是在CREATE VIEW語(yǔ)句中指定的名稱,而數(shù)據(jù)類型和是否為空繼承了基表中的對(duì)應(yīng)列。下面是執(zhí)行DESC命令查看視圖view_1結(jié)構(gòu)的結(jié)果: SQL> DESC view_1; 名稱 是否為空? 類型 NAME NULL VARCHAR2(10) SALARY NULL NUMBER(7,2) COMM1 NULL NUMBER(7,2) 視圖作為一種數(shù)據(jù)庫(kù)對(duì)象,它的相關(guān)信息被存儲(chǔ)在數(shù)據(jù)字典中。與當(dāng)前用戶的視圖有關(guān)的數(shù)據(jù)字典是USER_VIEWS,查詢這個(gè)數(shù)據(jù)字典,可以獲得當(dāng)前用戶的視圖的相關(guān)信息。例如,需要查詢視圖VIEW_2中的相關(guān)信息,可以執(zhí)行下面的SELECT語(yǔ)句: SELECT text FROM user_views WHERE view_name='VIEW_2'; 在列TEXT中存儲(chǔ)的是創(chuàng)建視圖時(shí)使用的SELECT語(yǔ)句。另外,在數(shù)據(jù)字典ALL_VIEWS存儲(chǔ)的是當(dāng)前用戶可以訪問(wèn)的所有視圖的信息,在數(shù)據(jù)字典DBA_VIEWS存儲(chǔ)的是系統(tǒng)中的所有視圖的信息,這個(gè)數(shù)據(jù)字典只有DBA可以訪問(wèn)。 2、修改 如果發(fā)現(xiàn)視圖的定義不合適,可以對(duì)其進(jìn)行修改。實(shí)際上視圖中的SELECT語(yǔ)句是不能直接修改的,所以修改視圖的一種方法是先刪除視圖,再重新創(chuàng)建,另一種方法是在創(chuàng)建視圖的CREATE語(yǔ)句中使用OR REPLACE選項(xiàng)。帶OR REPLACE選項(xiàng)的CREATE語(yǔ)句格式為: CREATE OR REPLACE VIEW 視圖名 AS SELECT語(yǔ)句 WITH READ ONLY WITH CHECK OPTION; 這樣在創(chuàng)建視圖時(shí),如果視圖不存在,則創(chuàng)建它。如果已經(jīng)存在一個(gè)同名的視圖,那么先刪除這個(gè)視圖,然后再根據(jù)SELECT語(yǔ)句創(chuàng)建新視圖,用這個(gè)新視圖代替原來(lái)的視圖。 3、刪除 視圖在不需要時(shí),可以將其從數(shù)據(jù)庫(kù)中刪除。刪除視圖的命令是DROP VIEW。用戶可以直接刪除自己創(chuàng)建的視圖,如果希望刪除其他用戶創(chuàng)建的視圖,則需要具有DROP ANY VIEW這個(gè)系統(tǒng)權(quán)限。DROP VIEW命令的格式為: DROP VIEW視圖名; 例如,要?jiǎng)h除視圖view_1,可以執(zhí)行下面的語(yǔ)句: DROP VIEW view_1; 視圖被刪除后,相關(guān)的信息也被從數(shù)據(jù)字典中刪除。 該文章在 2012/1/14 17:17:48 編輯過(guò)
|
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |