mysql視圖簡介及為什么使用視圖及其規則與局限
發表時間:2023-09-07 來源:明輝站整理相關軟件相關文章人氣:
[摘要]視圖簡介需要MySQL 5 MySQL 5添加了對視圖的支持。因此,本章內容適用于MySQL 5及以后的版本。視圖是虛擬的表。與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢。理解視圖的最好方法是看一個例子:輸入:select cust_name ,cust_contact from cu...
視圖簡介需要MySQL 5 MySQL 5添加了對視圖的支持。因此,本章內容適用于MySQL 5及以后的版本。
視圖是虛擬的表。與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢。
理解視圖的最好方法是看一個例子:
輸入:
select cust_name ,cust_contact from customers,orders,orderitems where customers.cust_id = orders.cust_id and orderutems.order_num = order.orders.order_num and prod_id = 'TNT2';
此查詢用來檢索訂購了某個特定產品的客戶。任何需要這個數據的人都必須理解相關表的結構,并且知道如何創建查詢和對表進行聯結。為了檢索其他產品(或多個產品)的相同數據,必須修改最后的 WHERE 子句。現在,假如可以把整個查詢包裝成一個名為 productcustomers 的虛擬表,則可以如下輕松地檢索出相同的數據:
輸入:
select cust_name ,cust_contact from productcustomers where prod_id = 'TNT2';
這就是視圖的作用。 productcustomers 是一個視圖,作為視圖,它不包含表中應該有的任何列或數據,它包含的是一個SQL查詢(與上面用以正確聯結表的相同的查詢)。
為什么使用視圖
我們已經看到了視圖應用的一個例子。下面是視圖的一些常見應用。
1.重用SQL語句。
2.簡化復雜的SQL操作。在編寫查詢后,可以方便地重用它而不必知道它的基本查詢細節。
3.使用表的組成部分而不是整個表。
4.保護數據。可以給用戶授予表的特定部分的訪問權限而不是整個表的訪問權限。
5.更改數據格式和表示。視圖可返回與底層表的表示和格式不同的數據。
在視圖創建之后,可以用與表基本相同的方式利用它們。可以對視圖執行 SELECT 操作,過濾和排序數據,將視圖聯結到其他視圖或表,甚至能添加和更新數據(添加和更新數據存在某些限制。關于這個內容稍后還要做進一步的介紹)。
重要的是知道視圖僅僅是用來查看存儲在別處的數據的一種設施。視圖本身不包含數據,因此它們返回的數據是從其他表中檢索出來的。在添加或更改這些表中的數據時,視圖將返回改變過的數據。
性能問題 因為視圖不包含數據,所以每次使用視圖時,都必須處理查詢執行時所需的任一個檢索。如果你用多個聯結和過濾創建了復雜的視圖或者嵌套了視圖,可能會發現性能下降得很厲害。因此,在部署使用了大量視圖的應用前,應該進行測試。
使用視圖
在理解什么是視圖(以及管理它們的規則及約束)后,我們來看一下視圖的創建。
1.視圖用 CREATE VIEW 語句來創建。
2.使用 SHOW CREATE VIEW viewname ;來查看創建視圖的語句。
3.用 DROP 刪除視圖,其語法為 DROP VIEW viewname;。
4.更新視圖時,可以先用DROP再用CREATE,也可以直接用CREATE ORREPLACE VIEW。如果要更新的視圖不存在,則第 2 條更新語句會創建一個視圖;如果要更新的視圖存在,則第 2 條更新語句會替換原有視圖。
視圖的規則和限制
下面是關于視圖創建和使用的一些最常見的規則和限制。
1.與表一樣,視圖必須唯一命名(不能給視圖取與別的視圖或表相同的名字)。
2.對于可以創建的視圖數目沒有限制。
3.為了創建視圖,必須具有足夠的訪問權限。這些限制通常由數據庫管理人員授予。
4.視圖可以嵌套,即可以利用從其他視圖中檢索數據的查詢來構造一個視圖。
5.ORDER BY 可以用在視圖中,但如果從該視圖檢索數據 SELECT 中也含有 ORDER BY ,那么該視圖中的 ORDER BY 將被覆蓋。
6.視圖不能索引,也不能有關聯的觸發器或默認值。
7.視圖可以和表一起使用。例如,編寫一條聯結表和視圖的 SELECT語句。
以上就是mysql視圖簡介及為什么使用視圖及其規則和限制的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。