首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 視圖完整指南:創建、分類、查看、修改、刪除與可更新性規則

     編輯:MySQL 資料庫相關知識

視圖核心特性

  • 虛擬表,不儲存數據,查詢時動態執行定義 SQL。
  • 列可來自多表,隱藏敏感欄位(如薪資),提升安全性與復用性。
  • 建立/刪除視圖不影響基表;更新視圖會同步反映到基表。
  • 多表視圖(含 JOIN/UNION/子查詢)不可 INSERT/DELETE,單表視圖通常可更新。

創建視圖語法與分類範例

CREATE VIEW view_name AS SELECT ...
類型範例說明
常量視圖CREATE VIEW v_pi AS SELECT 3.1415926;封裝標量值
聚合視圖CREATE VIEW v_stu_cnt AS SELECT COUNT(*) FROM t_student;COUNT/SUM/AVG 等
排序視圖CREATE VIEW v_stu_desc AS SELECT name FROM t_student ORDER BY id DESC;含 ORDER BY
內連接視圖CREATE VIEW v_g2 AS SELECT s.name FROM t_student s JOIN t_group g ON s.group_id=g.id WHERE g.id=2;等值連接
外連接視圖CREATE VIEW v_g2_left AS SELECT s.name FROM t_student s LEFT JOIN t_group g ON s.group_id=g.id WHERE g.id=2;LEFT/RIGHT JOIN
子查詢視圖CREATE VIEW v_sub AS SELECT name FROM t_student WHERE id IN (SELECT id FROM t_group);IN/EXISTS 等
UNION 視圖CREATE VIEW v_union AS SELECT id,name FROM t_student UNION ALL SELECT id,name FROM t_group;合並結果集

查看視圖元數據

SHOW TABLES;                    -- 列出表與視圖名
SHOW TABLE STATUS\G;            -- Engine=NULL、Comment=VIEW 區分視圖
SHOW CREATE VIEW view_name\G;   -- 完整定義 SQL
DESC view_name;                 -- 列結構
USE information_schema;
SELECT * FROM VIEWS WHERE TABLE_NAME='view_name'\G;

修改與刪除

-- 方式一:刪後重建(視圖無數據,開銷極小)
DROP VIEW v_old; CREATE VIEW v_old AS SELECT ...;

-- 方式二:原子替換(推薦)
CREATE OR REPLACE VIEW v_name AS SELECT ...;

-- 方式三:ALTER
ALTER VIEW v_name AS SELECT ...;

-- 刪除多個
DROP VIEW v1, v2, v3;

通過視圖操作基表數據

  • 查詢:SELECT * FROM view_name WHERE ...(同表)。
  • 更新:UPDATE view_name SET col=val WHERE ... → 實際更新基表。
  • 限制:多基表視圖禁止 INSERT/DELETE;含聚合/分組/UNION 的視圖不可更新。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved