【一文看懂SQL系列】SQL視圖 |進階乾貨,面試必備

SQL視圖

本文首先談一下視圖的含義和應用場景,之後對視圖的創建、修改、刪除、查看和更新進行講解,最後對比了視圖和表的異同。

含義
視圖是MySQL 15.1 版本出現的新特性

  1. 視圖是動態生成的,系統中只保存了視圖的SQL邏輯,不保存查詢結果
  2. 視圖是一張虛擬表,但可以像使用普通表一樣使用視圖;

應用場景

  1. 當多個地方都用到相同的查詢結果時
  2. 當該查詢結果使用的SQL語句較複雜時

一、創建視圖:

語法

CREATE VIEW 視圖名
AS
查詢語句

案例

兩張表學生表stuinfos 和 專業表major
查詢姓張的學生姓名和專業名

SELECT stuname, majorname
FROM stuinfos s
INNER JOIN major m ON s.majorid = m.id
WHERE s.stuname LIKE '張%'

如果查詢學生姓名和對應的專業名很常用,那麼可以將之封裝起來,創建視圖:

CREATE VIEW v1
AS
SELECT stuname, majorname
FROM stuinfos s
INNER JOIN major m ON s.majorid = m.id

使用試圖查詢 張同學的信息

SELECT * 
FROM v1
WHERE stuname LIKE '張%'

二、視圖的修改

修改在這裏的意思是整個視圖的修改,注意和第五大點的視圖更新意思不一樣

方式一
CREATE OR REPLACE VIEW 視圖名
AS
查詢語句

方式二
ALTER VIEW 視圖名
AS
查詢語句

三、刪除視圖

語法:

DROP VIEW 視圖1,視圖2,..;

四、查看視圖

方式一:
DESC v1; 

方式二:
SHOW CREATE VIEW v1;

五、視圖的更新

這裏的視圖更新是指對局部信息的更新

視圖的可更新性和視圖中的查詢定義有關係,以下類型的視圖是不能更新的:

  1. 包含以下關鍵字的SQL語句:分組函數,DISTINCT, GROUP BY, HAVING, UNION 或UNION ALL
  2. SELECT中包含子查詢
  3. JOIN
  4. FROM 一個不能更新的視圖
  5. WHERE子句的子查詢引用了FROM子句的表

六、視圖和表的對比

	創建語法的關鍵字  是否實際佔用物理空間   是否可以增刪改查

視圖   CREATE VIEW     只保存了SQL邏輯    一般不可以增刪改

表 	  CREATE TABLE    是               增刪改查
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章