视图-View
视图是一个虚拟表,由存储的查询构成,可以将它的输出看成一个表。但是视图并不在数据库中存储数据值,其数据来自定义视图的查询语句所引用的表,数据库只在数据字典中存储视图的定义信息。
视图具有以下优点:
- 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
- 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
- 限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
- 从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]
OR REPLACE:若所创建的试图已经存在,则替换旧视图;
FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用);
NOFORCE:如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。
alias:为视图产生的列定义的别名;
subquery :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
1、简单视图
create or replace view emp_view as select empno,ename,job,deptno from emp where deptno = 20;
2、创建只读视图
create or replace view emp_view_readonly as select * from dept where deptno != 60 with read only;
3、复杂视图
create or replace view emp_view_complex as select deptno 部门编号,max(sal) 最高工资,min(sal) 最低工资,avg(sal) 平均工资 from emp group by deptno;
4、连接视图
create or replace view emp_view_union as select d.dname,d.loc,e.empno,e.ename from emp e,dept d where e.deptno = d.deptno and d.deptno = 20;
查看视图定义
前面介绍过,数据库并不存储视图中数值,而是存储视图的定义信息。用户可以通过查询数据字典视图USER_VIEWS,已获得视图的定义信息。
修改视图定义
建立视图后,如果要改变视图所对应的子查询语句,则可以执行CREATE OR REPLACE VIEW语句
重新编译视图
视图被创建后,如果用户修改了视图所依赖的基本表定义,则该视图会被标记为无效状态。当用户访问视图时,Oracle会自动重新编译视图。
ALTER VIEW... COMPILE
删除视图
当视图不再需要时,用户可以执行DROP VIEW语句删除视图。用户可以直接删除其自身模式中的视图,但如果要删除其它用户模式中的视图,要求该用户必须具有DROP ANY VIEW 系统权限。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南