MySQL視圖的作用詳細說明(一)-簡化復雜聯結、格式化檢索出的數據
發表時間:2023-09-07 來源:明輝站整理相關軟件相關文章人氣:
[摘要]利用視圖簡化復雜的聯結視圖的最常見的應用之一是隱藏復雜的SQL,這通常都會涉及聯結。請看下面的例子:輸入:create view productcustomers as select cust_name,cust_contact,prod_id from customers,orders,orde...
利用視圖簡化復雜的聯結視圖的最常見的應用之一是隱藏復雜的SQL,這通常都會涉及聯結。請看下面的例子:
輸入:
create view productcustomers as select cust_name,cust_contact,prod_id from customers,orders,orderitems where customers.cust_id = orders.cust_id and orderitems.order_num = orders.order_num;
分析:這條語句創建一個名為 productcustomers 的視圖,它聯結三個表,以返回已訂購了任意產品的所有客戶的列表。如果執行SELECT * FROM productcustomers ,將列出訂購了任意產品的客戶。
為檢索訂購了產品 TNT2 的客戶,可如下進行:
輸入:
select cust_name,cust_contact from productstomers where prod_id = 'TNT2';
輸出:

分析:這條語句通過 WHERE 子句從視圖中檢索特定數據。在MySQL處理此查詢時,它將指定的 WHERE 子句添加到視圖查詢中的已有WHERE 子句中,以便正確過濾數據。
可以看出,視圖極大地簡化了復雜SQL語句的使用。利用視圖,可一次性編寫基礎的SQL,然后根據需要多次使用。
創建可重用的視圖 創建不受特定數據限制的視圖是一種好辦法。例如,上面創建的視圖返回生產所有產品的客戶而不僅僅是 生產TNT2 的客戶。擴展視圖的范圍不僅使得它能被重用,而且甚至更有用。這樣做不需要創建和維護多個類似視圖。
用視圖重新格式化檢索出的數據
如上所述,視圖的另一常見用途是重新格式化檢索出的數據。下面的 SELECT 語句在單個組合計算列中返回供應商名和位置:
輸入:
select concat(rtrim(vend_name),'(',rtrim(vend_country), ')') as vend_title from vendors order by vend_name;
輸出:

現在,假如經常需要這個格式的結果。不必在每次需要時執行聯結,創建一個視圖,每次需要時使用它即可。為把此語句轉換為視圖,可按如下進行:
輸入:
create view vendorlocation as select concat(rtrim(vend_name),'(',rtrim(vend_country), ')') as vend_title from vendors order by vend_name;
分析:這條語句使用與以前的 SELECT 語句相同的查詢創建視圖。為了檢索出以創建所有郵件標簽的數據,可如下進行:
輸入:
select * from vendorlocations;
輸出:

以上就是MySQL視圖的作用詳解(一)-簡化復雜聯結、格式化檢索出的數據的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。