- 本博客是《MySQL基礎》系列博客的第十部分,主要介紹MySQL的視圖
- 本博客既爲方便自己查看複習而作,亦爲你而作,望能有所裨益
- 學習交流請聯繫 [email protected]
基本概念
視圖是虛擬表,本身不存儲數據,而是按照指定的方式進行查詢的SQL語句的封裝
視圖應用
爲了說明視圖的作用,我們在這裏舉一個例子:
我們要從 sakila 數據庫查詢出顧客的id號(Customer_id)、姓名(first_name,last_name)、地址(address)、城市(city)、國家(country)這些字段,並將其放在一張表內
因爲涉及到多張表,所以這裏就涉及到我們先前在《MySQL基礎(七):DQL語句》中提到的連接查詢。
select customer_id,first_name,last_name,ad.address,city,co.country from customer cu
join address ad on ad.address_id = cu.address_id
join city on city.city_id = ad.city_id
join country co on co.country_id = city.country_id
; -- 表後可加別名,用以簡化書寫,如此處address的別名爲ad
但是這種複雜的多重查詢語句不可能每次查詢都寫一遍,因此我們想是不是可以像其他語言一樣封裝下方便重複利用呢?
於是便有了視圖。
創建視圖
create view <視圖名> as <所封裝的語句>
create view v_customer_info as
select customer_id,first_name,last_name,ad.address,city,co.country from customer cu
join address ad on ad.address_id = cu.address_id
join city on city.city_id = ad.city_id
join country co on co.country_id = city.country_id;
查看視圖
show full tables where table_type like '%VIEW%'; -- 查看當前數據庫下已創建的所有視圖
show create view <視圖名>; -- 查看創建視圖的SQL語句
使用視圖
select * from <視圖名>; -- 調用視圖,即執行所封裝的SQL語句
修改視圖
create or replace view <視圖名> as <所封裝的語句>
-- 有則改之,無則加之
刪除視圖
drop view <視圖名>;