1. 程式人生 > >(十)MySQL基礎——檢視

(十)MySQL基礎——檢視

一、檢視的介紹

含義:虛擬表,和普通表一樣使用。行和列的資料來自定義檢視的查詢中使用的表,並且是在使用檢視時動態生成的,只儲存了sql邏輯,不儲存查詢結果。(mysql5.1版本出現的新特性,是通過表動態生成的資料)

應用場景:多個地方用到同樣的查詢結果  或者  該查詢結果使用的sql語句比較複雜。

類比生活中實際的例子來說,檢視和普通表的區別就像臨時元件的表演班和正常上課的班級之間的區別。

-- 案例:查詢姓張的學生名和專業名(傳統寫法)
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid=m.id
WHERE s.stuname LIKE '張%';


-- 新增檢視
CREATE VIEW v1
AS 
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid=m.id;

SELECT * FROM v1 WHERE stuname LIKE '張%';

二、檢視的建立、修改、刪除和檢視

建立語法:CREATE   VIEW   檢視名   AS   查詢語句;

修改語法:

方式一: CREATE   OR   REPLACE   VIEW   檢視名   AS   新的查詢語句;

方式二: ALTER   VIEW   檢視名   AS   新的查詢語句;(類似於表修改)

刪除語法: DROP   VIEW   檢視名1,檢視名2,...... ;

檢視語法: DESC   檢視名;

三、檢視的好處

(1)重用sql語句

(2)簡化複雜的sql操作,不必知道它的查詢細節

(3)保護資料,提高安全性

四、檢視的更新

CREATE OR REPLACE VIEW myv1    
AS
SELECT last_name,email
FROM employees;

SELECT * FROM myv1;

(1)插入

INSERT INTO myv1 VALUES ('張飛','
[email protected]
');

(2)修改

UPDATE myv1 SET last_name='張無忌' WHERE last_name='張飛';

(3)刪除

DELETE FROM myv1 WHERE last_name='張無忌';

五、檢視的許可權

檢視的可更新和檢視中查詢的定義有關係,具備以下特點的檢視不允許更新:

(1)包含以下關鍵字的sql語句:分組函式、DISTINCT、GROUP   BY、HAVING、UNION或者UNION  ALL

(2)常量檢視

(3)SELECT中包含子查詢

(4)JOIN

(5)FROM一個不能更新的檢視

(6)WHERE子句的子查詢引用了FROM子句中的表

六、檢視和表對比

  建立語法的關鍵字 是否實際佔用物理空間 使用
檢視 CREATE   VIEW  只儲存了sql邏輯 增刪改查,只是一般不能增刪改
CREATE  TABLE 儲存了資料 增刪改查