Z
ZHANK
表设计与索引

视图 VIEW

掌握创建视图、简化复杂查询、可更新视图

视图 VIEW

视图是保存起来的查询——就像一个虚拟表,每次访问时动态执行底层 SELECT。

学完本章你将: 创建视图、简化复杂查询、可更新视图。


为什么需要视图

你有一个复杂的 JOIN 查询,每次都要写几十行。视图给它起个名字,以后直接用:

sql
-- 把复杂查询保存为视图
CREATE VIEW user_orders AS
SELECT u.name, u.city, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id;

-- 以后直接查视图,和查表一样
SELECT * FROM user_orders WHERE order_count > 3;

视图的作用

好处说明
简化查询复杂逻辑封装一次,多次复用
安全控制只暴露部分列给用户(隐藏敏感字段)
向后兼容表结构变了,改视图不改应用代码

更新视图

有些视图可以 UPDATE/INSERT/DELETE(简单视图、不加聚合的),数据会写入底层的真实表:

sql
CREATE VIEW beijing_users AS
SELECT * FROM users WHERE city = '北京';

-- 通过视图插入 → 实际插入到 users 表
INSERT INTO beijing_users (name, age, city) VALUES ('新人', 22, '北京');

⚠️ 包含 JOIN、GROUP BY、DISTINCT 的视图不能更新。


删除视图

sql
DROP VIEW IF EXISTS user_orders;