1. 视图简介
视图是虚表,没有具体物理数据,是通过实体表的一种计算映射逻辑。主要就是为了方便和数据安全。
2. 视图作用
- 简化数据操作:视图可以简化用户处理数据的方式。
- 着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。
- 视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
- 提供向后兼容性:视图使用户能够在表的架构更改时为表创建向后兼容接口。
- 自定义数据:视图允许用户以不同方式查看数据。
- 导出和导入数据:可使用视图将数据导出到其他应用程序。
3. 创建视图
在创建视图之前需要确认当前用户是否有创建视图权限
select * from user_role_privs; 查看用户的角色 SELECT * FROM DBA_SYS WHERE GRANTEE='DBA'; 查看角色对应的权限 grant dba to scott; 授予用户DBA权限 grant create view to scott; 授予用户创建视图权限
接下来创建视图
--创建简单视图 create view temp as select * from dept; --测试 select * from temp where rownum=1;
一般为保证数据安全,常常将视图设为只读视图
--创建简单视图:只读 create or replace view temp1 as select empno,ename,job,mgr from emp with read only; --测试(不能插入) insert into temp1(empno,ename,job,mgr) values(1,'David','coder',9300);
创建视图语句详解
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 解释: OR REPLACE :若所创建的试图已经存在,ORACLE自动重建该视图; FORCE :不管基表是否存在ORACLE都会自动创建该视图; NOFORCE :只有基表都存在ORACLE才会创建该视图: alias :为视图产生的列定义的别名; subquery :一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :该视图上不能进行任何DML操作。
4. 使用视图
语法和操作表的语法相同,这里不加详述
查询:select * from temp1; select * from temp1 where ename like '%M%'; 修改:update temp1 set job='销售' where ename='sb'; 添加:insert into temp2 values('1110','Daming','技术'); 删除:delete from temp2 where empno=2222
5. 删除视图
drop view temp;
- 删除视图的定义不影响基表中的数据。
- 只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
- 视图被删除后,基于被删除视图的其他视图或应用将无效。
6. 视图分类
视图分为简单视图和复杂视图。
- 简单视图只从单表里获取数据;复杂视图从多表里获取数据。
- 简单视图不包含函数和数据组;复杂视图包含函数和数据组。
- 简单视图可以实现DML操作;复杂视图不可以。