CREATE VIEW view_name AS SELECT_statement;
範例:
USE zhaojd_test;
CREATE TABLE t_product (
id INT PRIMARY KEY,
pname VARCHAR(20),
price DECIMAL(8,2)
);
INSERT INTO t_product VALUES (1,'apple',6.5), (2,'orange',3);
CREATE VIEW view_product AS SELECT id, pname FROM t_product;
SELECT * FROM view_product;
結果:隱藏 price 欄位。
| 類型 | 範例 |
|---|---|
| 常數視圖 | CREATE VIEW v1 AS SELECT 3.1415926; |
| 聚合函數視圖 | CREATE VIEW v2 AS SELECT COUNT(*) FROM t_student; |
| 排序視圖 | CREATE VIEW v3 AS SELECT name FROM t_student ORDER BY id DESC; |
| 內連接視圖 | CREATE VIEW v4 AS SELECT s.name FROM t_student s JOIN t_group g ON s.group_id=g.id WHERE g.id=2; |
| 外連接視圖 | CREATE VIEW v5 AS SELECT s.name FROM t_student s LEFT JOIN t_group g ON s.group_id=g.id WHERE g.id=2; |
| 子查詢視圖 | CREATE VIEW v6 AS SELECT s.name FROM t_student s WHERE s.id IN (SELECT id FROM t_group); |
| UNION 視圖 | CREATE VIEW v7 AS SELECT id,name FROM t_student UNION ALL SELECT id,name FROM t_group; |
SHOW TABLES;:同時列出表與視圖名稱。SHOW TABLE STATUS [FROM db] [LIKE 'pattern'] \G:Engine=NULL、Comment=VIEW 識別視圖。SHOW CREATE VIEW view_name \G:完整定義。DESCRIBE view_name;:欄位結構。SELECT * FROM information_schema.views WHERE table_name='view_name' \G:系統表查詢。DROP VIEW view_name [, view_name2 ...];
CREATE OR REPLACE VIEW view_name AS new_query;:刪除重建一步到位。ALTER VIEW view_name AS new_query;:就地修改。同表查詢,將表名換為視圖名。
INSERT INTO view_name VALUES (...);
UPDATE view_name SET col='val' WHERE ...;
DELETE FROM view_name WHERE ...;
實際影響基礎表資料。
來源超過一張基礎表時,禁止 INSERT/DELETE,僅允許 UPDATE(且僅限單一基礎表欄位)。