SQL视图
基本概念
视图是基于SQL语句结果集的可视化表,每当用户查询视图时,数据库引擎通过使用SQL语句来重建数据,所以每次查询视图都是获取的最新的数据。
使用视图的好处:
1、简化用户的操作。可以使用户更少的关注基本表,通过视图可以便捷的查询到自己想要的数据,如可以将一些复杂的联表查询放到视图中,用户只需要使用一些简单查询即可获取到自己想要的数据;
2、使用户能以多钟角度看待同一数据。视图的定义是多样性的,通过定义视图可以实现不同维度的虚拟表,以便用户在查询时可以方便获取不同维度的数据;
3、对重构数据库提供了一定程度的逻辑独立性。比如将一个基本表分为两个基本表(逻辑结构改变),或者给表增加新的字段、增加新的对应关系,只需要修改视图内部查询语句即可,暴露给用户的虚拟表可以不改变的;
4、能够对机密数据提供安全保护。仅仅暴露给用户需要的或者说权限以内的数据,通过代码调用不同的视图,实现对数据查询的管控;
5、适当的利用视图可以更清晰的表达查询。创建的视图可能是更有针对性的,通过查询视图可以避免一些杂乱的查询。
常用操作
- 创建
直接创建视图
CREATE VIEW view_name AS SELECT column_name FROM table_name WHERE condition CREATE VIEW male_v AS SELECT ID,NAME,dep,MARRY FROM t_employee WHERE SEX='男'
创建或修改覆盖视图
CREATE OR REPLCE VIEW view_name AS SELECT column_name FROM table_name WHERE condition CREATE OR REPLACE VIEW male_v(ID,NAME,dep,MARRY,home) AS SELECT ID,NAME,dep,MARRY,home FROM t_employee WHERE SEX='男'
- 查询
视图的查询和表的查询是一样的,直接使用select语句即可。
查看视图创建SQL
SHOW CREATE VIEW male_v
查看视图(表结构)
DESCRIBE male_v
- 更新
在SQL视图上也可以使用修改数据的DML语句,如 INSERT、UPDATE和DELETE。
视图可以在特定的情况下更新:
1、SELECT 子句不能包含 DISTINCT 关键字
2、SELECT 子句不能包含任何汇总函数(summary functions)
3、SELECT 子句不能包含任何集合函数(set functions)
4、SELECT 子句不能包含任何集合运算符(set operators)
5、SELECT 子句不能包含 ORDER BY 子句
6、视图不能包含连接操作符
7、视图不能包含伪列或表达式
8、FROM 子句中不能有多个数据表
9、WHERE 子句不能包含子查询(subquery)
10、查询语句中不能有 GROUP BY 或者 HAVING
11、计算得出的列不能更新
12、视图必须包含原始数据表中所有的 NOT NULL 列,从而使 INSERT 查询生效。
如果视图满足以上所有的条件,该视图就可以被更新,但其实最终更新的还是原始数据表,只是其结果反应在了视图上。
更新SQL示例
UPDATE male SET home = '西安' WHERE name='天天'; INSERT INTO male VALUES (value1, value2, value3, ...); DELETE FROM male WHERE age = 22;
- 删除
DROP VIEW view_name;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南