這篇文章帶給大家的內容是關於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;
create view custmeremaillist AS SELECT cust_id ,cust_name,cust_email from customers where cust_email is not NULL;
直接使用視圖
SELECT * from custmeremaillist ;
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;
1. 分组(group by 和 having) 2. 联结 3. 自查询 4. 并 5. 聚合函数(min()、count()、sum()等) 6. Distinct 7. 导出(计算)列
以上是MYSQL中檢視的用法介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!