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