视图 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;