首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 視圖操作全指南:創建、修改、刪除、查看、可更新性判斷與 CHECK OPTION

     編輯:MySQL 綜合教學

概念

視圖是虛擬表,不存儲物理數據,查詢時動態執行定義 SQL。優勢:簡化業務 SQL、安全隔離(只暴露允許的列/行)、邏輯獨立(底表結構變更不影響視圖使用者)。

語法


-- 創建/替換
CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] 
VIEW view_name [(column_list)] AS select_statement 
[WITH [CASCADED|LOCAL] CHECK OPTION];

-- 修改
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] 
VIEW view_name [(column_list)] AS select_statement 
[WITH [CASCADED|LOCAL] CHECK OPTION];

-- 刪除
DROP VIEW [IF EXISTS] view_name [, view_name2] ... [RESTRICT|CASCADE];

範例


CREATE VIEW view_test AS 
SELECT t1.sid, t1.username, t2.department 
FROM test1 t1 LEFT JOIN test2 t2 ON t1.sid = t2.sid;

SELECT * FROM view_test;

DROP VIEW view_test;

關鍵限制

  • FROM 子句不可包含子查詢(MySQL 5.7+ 已放寬,但建議避免)。
  • 不可更新的視圖特徵:含聚合函數、GROUP BY/DISTINCT/HAVING/UNION、常量視圖、SELECT 含子查詢、JOIN、FROM 引用不可更新視圖、WHERE 子查詢引用 FROM 表。

CHECK OPTION 詳解

  • WITH CASCADED CHECK OPTION(默認):更新時必須滿足當前視圖及所有底層視圖的條件。
  • WITH LOCAL CHECK OPTION:僅需滿足當前視圖條件。
  • 作用:防止通過視圖更新導致行「脫離」視圖定義範圍。

查看視圖狀態

MySQL 5.1+ SHOW TABLES 同時列出表與視圖;SHOW FULL TABLES WHERE Table_type = 'VIEW' 僅顯示視圖。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved