MySQL中視圖如何使用?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運(yùn)營、成都app軟件開發(fā)、手機(jī)網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、托管服務(wù)器等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。
1、什么是視圖
執(zhí)行一條SQL,將結(jié)果集保存在一張?zhí)摂M表中
(相關(guān)推薦:MySQL教程)
2、為什么要使用視圖
重復(fù)利用SQL語句
簡化SQL查詢,快速取數(shù)據(jù)
只用知道表的部分結(jié)構(gòu)
保護(hù)數(shù)據(jù),根據(jù)特定授權(quán)
更改數(shù)據(jù)格式和表示,視圖可返回與底層表的表示和格式不同的數(shù)據(jù)。
注意事項(xiàng)
? 在視圖創(chuàng)建后,可以用與表基本相同的方式使用(查詢、過濾、排序數(shù)據(jù)、與其他視圖或連結(jié)、(添加、更新))
? 視圖只是用來查看存儲在別處的數(shù)據(jù)的設(shè)施,本身不包含數(shù)據(jù),返回的數(shù)據(jù)也是從其他表檢索出來的。
? 因?yàn)橐晥D本身不包含數(shù)據(jù),索引多個表連結(jié)或嵌套可能存在性能問題,需測試
3、規(guī)則和限制
表名必須唯一(與其他視圖和表)
創(chuàng)建視圖沒有限制
足夠權(quán)限
視圖可以嵌套,可以從其他視圖查詢來構(gòu)造一個視圖
如果視圖和從視圖中查詢都有order by,視圖中的order by將被覆蓋
視圖不能索引
視圖可以和表一起使用
4、使用視圖
創(chuàng)建視圖 create view
查看創(chuàng)建視圖的語句。Show create view viewname
刪除視圖 drop view viewname
更新視圖,1?? 先drop后create 2?? 直接用create or replace view
利用視圖簡化復(fù)雜的聯(lián)結(jié)查詢
5、利用視圖簡化復(fù)雜的聯(lián)結(jié)查詢
創(chuàng)建視圖
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
使用視圖
SELECT cust_name, cust_contact FROM productcustomers WHERE prod_id = 'TNT2';
6、用視圖重新格式化檢索出的數(shù)據(jù)
select concat (rtrim(vend_name) , '(',rtrim(vend_country),')') as vend_title from vendors order by vend_name;
如果經(jīng)常用到這個格式的話,可以創(chuàng)建一個視圖
CREATE VIEW vendorlocations AS SELECT concat ( rtrim( vend_name ), '(', rtrim( vend_country ), ')' ) AS vend_title FROM vendors ORDER BY vend_name;
可以直接通過視圖查詢得出結(jié)果
SELECT * FROM vendorlocations;
7、用視圖過濾不想要的數(shù)據(jù)
create view custmeremaillist AS SELECT cust_id ,cust_name,cust_email from customers where cust_email is not NULL;
直接使用視圖
SELECT * from custmeremaillist ;
8、使用視圖與計算字段
mysql查詢
SELECT prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM orderitems WHERE order_num=20005;
創(chuàng)建視圖
CREATE VIEW orderitemsexpanded AS SELECT order_num, prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM orderitems WHERE order_num=20005;
使用視圖
SELECT * FROM orderitemsexpanded WHERE order_num=20005;
9、更新視圖
通常,視圖是可以更新的(insert、update、delete)。更新視圖將更新基表。如果視圖中有以下定義將不能被更新。
1. 分組(group by 和 having) 2. 聯(lián)結(jié) 3. 自查詢 4. 并 5. 聚合函數(shù)(min()、count()、sum()等) 6. Distinct 7. 導(dǎo)出(計算)列
所以視圖最好直接使用select查詢。
感謝各位的閱讀!看完上述內(nèi)容,你們對MYSQL中視圖如何使用大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。