明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

MySQL視圖的作用詳細(xì)說明(一)-簡化復(fù)雜聯(lián)結(jié)、格式化檢索出的數(shù)據(jù)

[摘要]利用視圖簡化復(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';

輸出:

1.png

分析:這條語句通過 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;

輸出:

2.png

現(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;

輸出:

3.png

以上就是MySQL視圖的作用詳解(一)-簡化復(fù)雜聯(lián)結(jié)、格式化檢索出的數(shù)據(jù)的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。