您好,登錄后才能下訂單哦!
MYSQL中視圖如何使用?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
1、什么是視圖
執行一條SQL,將結果集保存在一張虛擬表中
(相關推薦:MySQL教程)
2、為什么要使用視圖
重復利用SQL語句
簡化SQL查詢,快速取數據
只用知道表的部分結構
保護數據,根據特定授權
更改數據格式和表示,視圖可返回與底層表的表示和格式不同的數據。
注意事項
? 在視圖創建后,可以用與表基本相同的方式使用(查詢、過濾、排序數據、與其他視圖或連結、(添加、更新))
? 視圖只是用來查看存儲在別處的數據的設施,本身不包含數據,返回的數據也是從其他表檢索出來的。
? 因為視圖本身不包含數據,索引多個表連結或嵌套可能存在性能問題,需測試
3、規則和限制
表名必須唯一(與其他視圖和表)
創建視圖沒有限制
足夠權限
視圖可以嵌套,可以從其他視圖查詢來構造一個視圖
如果視圖和從視圖中查詢都有order by,視圖中的order by將被覆蓋
視圖不能索引
視圖可以和表一起使用
4、使用視圖
創建視圖 create view
查看創建視圖的語句。Show create view viewname
刪除視圖 drop view viewname
更新視圖,1?? 先drop后create 2?? 直接用create or replace view
利用視圖簡化復雜的聯結查詢
5、利用視圖簡化復雜的聯結查詢
創建視圖
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、用視圖重新格式化檢索出的數據
select concat (rtrim(vend_name) , '(',rtrim(vend_country),')') as vend_title from vendors order by vend_name;
如果經常用到這個格式的話,可以創建一個視圖
CREATE VIEW vendorlocations AS SELECT concat ( rtrim( vend_name ), '(', rtrim( vend_country ), ')' ) AS vend_title FROM vendors ORDER BY vend_name;
可以直接通過視圖查詢得出結果
SELECT * FROM vendorlocations;
7、用視圖過濾不想要的數據
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;
創建視圖
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. 聯結 3. 自查詢 4. 并 5. 聚合函數(min()、count()、sum()等) 6. Distinct 7. 導出(計算)列
所以視圖最好直接使用select查詢。
感謝各位的閱讀!看完上述內容,你們對MYSQL中視圖如何使用大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。