MySQL視圖的作用詳細(xì)說明(一)-簡化復(fù)雜聯(lián)結(jié)、格式化檢索出的數(shù)據(jù)
發(fā)表時間:2023-09-07 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]利用視圖簡化復(fù)雜的聯(lián)結(jié)視圖的最常見的應(yīng)用之一是隱藏復(fù)雜的SQL,這通常都會涉及聯(lián)結(jié)。請看下面的例子:輸入:create view productcustomers as select cust_name,cust_contact,prod_id from customers,orders,orde...
利用視圖簡化復(fù)雜的聯(lián)結(jié)視圖的最常見的應(yīng)用之一是隱藏復(fù)雜的SQL,這通常都會涉及聯(lián)結(jié)。請看下面的例子:
輸入:
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;
分析:這條語句創(chuàng)建一個名為 productcustomers 的視圖,它聯(lián)結(jié)三個表,以返回已訂購了任意產(chǎn)品的所有客戶的列表。如果執(zhí)行SELECT * FROM productcustomers ,將列出訂購了任意產(chǎn)品的客戶。
為檢索訂購了產(chǎn)品 TNT2 的客戶,可如下進(jìn)行:
輸入:
select cust_name,cust_contact from productstomers where prod_id = 'TNT2';
輸出:
分析:這條語句通過 WHERE 子句從視圖中檢索特定數(shù)據(jù)。在MySQL處理此查詢時,它將指定的 WHERE 子句添加到視圖查詢中的已有WHERE 子句中,以便正確過濾數(shù)據(jù)。
可以看出,視圖極大地簡化了復(fù)雜SQL語句的使用。利用視圖,可一次性編寫基礎(chǔ)的SQL,然后根據(jù)需要多次使用。
創(chuàng)建可重用的視圖 創(chuàng)建不受特定數(shù)據(jù)限制的視圖是一種好辦法。例如,上面創(chuàng)建的視圖返回生產(chǎn)所有產(chǎn)品的客戶而不僅僅是 生產(chǎn)TNT2 的客戶。擴(kuò)展視圖的范圍不僅使得它能被重用,而且甚至更有用。這樣做不需要創(chuàng)建和維護(hù)多個類似視圖。
用視圖重新格式化檢索出的數(shù)據(jù)
如上所述,視圖的另一常見用途是重新格式化檢索出的數(shù)據(jù)。下面的 SELECT 語句在單個組合計(jì)算列中返回供應(yīng)商名和位置:
輸入:
select concat(rtrim(vend_name),'(',rtrim(vend_country), ')') as vend_title from vendors order by vend_name;
輸出:
現(xiàn)在,假如經(jīng)常需要這個格式的結(jié)果。不必在每次需要時執(zhí)行聯(lián)結(jié),創(chuàng)建一個視圖,每次需要時使用它即可。為把此語句轉(zhuǎn)換為視圖,可按如下進(jìn)行:
輸入:
create view vendorlocation as select concat(rtrim(vend_name),'(',rtrim(vend_country), ')') as vend_title from vendors order by vend_name;
分析:這條語句使用與以前的 SELECT 語句相同的查詢創(chuàng)建視圖。為了檢索出以創(chuàng)建所有郵件標(biāo)簽的數(shù)據(jù),可如下進(jìn)行:
輸入:
select * from vendorlocations;
輸出:
以上就是MySQL視圖的作用詳解(一)-簡化復(fù)雜聯(lián)結(jié)、格式化檢索出的數(shù)據(jù)的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。