Oracle Schema Objects——View
Oracle视图View
普通视图、物化视图
- 视图(视图不包含数据,不是段对象,不占用空间,只是一个代码.)
- 作用:
- 简化SQL
- 为安全,不暴露表的名称
- 视图 DML
- 视图允许DML操作,可以删除,插入数据,更新数据,但是需要满足特定的条件。
- 视图 -- 物化视图(是段对象,会占用物理空间)
- 将查询的结果集保存下来,用于后续的查询,提高查询效率。
- 和普通视图不同,物化视图是一个段对象,占用物理空间。
用途
– 提高查询效率
– 数据复制

|
SQL语句 |
SQL> select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno; |
|
创建视图 |
SQL> create view emp_info as select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno; |
|
查看驶入 |
SQL> select * from emp_info; |
|
创建物化视图: |
SQL> create materialized view mvt as select * from t where id > 1; |
物化视图的一般用法详见链接: <http://www.itpub.net/thread-1614812-1-1.html>
- 视图是从一个或几个实体表(或视图)导出的表。它与实体表不同,视图本身是一个不包含任何真实数据的虚拟表。
- 数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的实体表中。所以实体表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,通过它可以看到数据库中自己感兴趣的数据及其变化。
视图的优点
- 视图能够简化用户的操作;
- 视图使用户能以多种角度看待同一数据;
- 视图对重构数据库提供了一定程度的逻辑独立性;
- 视图能够对机密数据提供安全保护;
- 适当的利用视图可以更清晰的表达查询;
查询视图的数据字典:user_views
SELECT * FROM user_views;
创建视图语法
|
CREATE [FORCE | NOFORCE] [OR REPLACE] VIEW 视图名称 [(别名1,别名2,...)] AS 子查询 ; |
语法参数:
|
FORCE |
表示要创建视图的表不存在也可以创建视图; |
|
NOFORCE |
(默认)表示要创建视图的表必须存在,否则无法创建; |
|
OR REPLACE |
表示视图的替换,如果创建的视图不存在则创建新的,如果视图已经存在,则将其进行替换。 |
scott用户创建用户权限不足,切换到sys用户,
执行:GRANT CREATE VIEW TO scott;授予scott用户创建视图的权限.
|
创建一张基本工资大于2000的雇员信息的视图 |
|
CREATE VIEW v_view AS SELECT * FROM emp WHERE sal>2000; SELECT * FROM v_view; |
|
创建一张只包含20部门雇员信息的视图 |
|
CREATE VIEW v_emp20 AS SELECT * FROM emp WHERE deptno=20 ; |
|
替换v_myview视图 —— 定义新视图,可以显示每个部门的详细信息。 |
|
CREATE OR REPLACE VIEW v_myview AS SELECT d.deptno,d.dname,d.loc, COUNT(e.empno) count,NVL(ROUND(AVG(sal),2),0) avg,NVL(SUM(sal),0) sum, NVL(MAX(sal),0) max,NVL(MIN(sal),0) min FROM emp e,dept d WHERE e.deptno(+)=d.deptno GROUP BY d.deptno,d.dname,d.loc ; |
|
为视图中查询的列起别名,将列的名称分别变为中文. |
|
CREATE OR REPLACE VIEW v_myview (部门编号,部门名称,位置,人数,平均工资,总工资,最高工资,最低工资) AS SELECT d.deptno,d.dname,d.loc, COUNT(e.empno) count,NVL(ROUND(AVG(sal),2),0) avg,NVL(SUM(sal),0) sum, NVL(MAX(sal),0) max,NVL(MIN(sal),0) min FROM emp e,dept d WHERE e.deptno(+)=d.deptno GROUP BY d.deptno,d.dname,d.loc ; |
更新视图
- 视图本身是针对于多张数据表映射的结果,但是在默认情况下建立的视图,也是可以进行更新操作的。
1.更新简单视图(单表映射视图)
|
定义只包含20部门雇员信息的视图 |
|
CREATE OR REPLACE VIEW v_emp20 AS SELECT empno,ename,job,sal,deptno FROM emp WHERE deptno=20 ; |
|
向v_emp20视图之中增加一条新数据 |
|
INSERT INTO v_emp20(empno,ename,job,sal,deptno) VALUES (6688,'wendy','CLERK',1900,20) ; COMMIT ; |
|
对视图执行修改操作 |
|
UPDATE v_emp20 SET ename='MLDNJAVA',job='MANAGER',sal=2300 WHERE empno=6688 ; COMMIT ; |
|
删除v_emp20视图中的数据 |
|
DELETE FROM v_emp20 WHERE empno=6688 ; COMMIT ; |
2、更新复杂视图
|
创建一个视图,要求显示所有20部门中的雇员编号、姓名、职位、基本工资、部门编号、部门名称、位置 |
|
CREATE OR REPLACE VIEW myview AS SELECT e.empno,e.ename,e.job,e.sal,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno AND d.deptno=20 ; |
|
向myview视图之中增加一条数据 |
|
INSERT INTO myview (empno,ename,job,sal,deptno,dname,loc) VALUES (6688,'魔乐','CLERK',2000,50,'教学','北京') ; |
|
修改myview视图中的数据 |
|
UPDATE myview SET ename='史密斯',sal=5000,dname='教学' WHERE empno=7369 ; |
|
删除myview视图中的数据 |
|
DELETE FROM myview WHERE empno=7369 ; |
|
删除视图之中所有20部门雇员的信息 |
|
DELETE FROM myview WHERE deptno=20 ; |
WITH CHECK OPTION子句
- 在创建视图的时候有时候需要使用一些WHERE子句做一些条件的限制,但是默认情况下的视图创建完成之后,是可以通过视图去修改在WHERE子句之中所使用的字段内容的,而在此时就需要通过WITH CHECK OPTION子句来保证视图的创建条件不被更新。
- WITH CHECK OPTION子句
|
CREATE [FORCE | NOFORCE] [OR REPLACE] VIEW 视图名称 [(别名1,别名2,...)] AS 子查询 [WITH CHECK OPTION [ CONSTRAINT 约束名称] ]; |
WITH READ ONLY子句
- 让视图中所有字段不可更新,则可以通过WITH READ ONLY子句控制。
- WITH READ ONLY子句
|
CREATE [FORCE | NOFORCE] [OR REPLACE] VIEW 视图名称 [(别名1,别名2,...)] AS 子查询 [WITH CHECK OPTION [ CONSTRAINT 约束名称] ] [WITH READ ONLY] ; |
删除视图
- DROP VIEW语法
- DROP VIEW 视图名称 ;
- 删除v_myview视图
- DROP VIEW v_myview ;
Oracle Schema Objects——View的更多相关文章
- Oracle Schema Objects(Schema Object Storage And Type)
One characteristic of an RDBMS is the independence of physical data storage from logical data struct ...
- Oracle Schema Objects——Tables——TableType
Oracle Schema Objects Object Tables object type An Oracle object type is a user-defined type with a ...
- Oracle Schema Objects——PARTITION
Oracle Schema Objects 表分区 表- - 分区( partition )TABLE PARTITION 一段时间给出一个分区,这样方便数据的管理. 可以按照范围range分区,列表 ...
- Oracle Schema Objects——Index
索引主要的作用是查询优化. Oracle Schema Objects 查看执行计划的权限:查看执行计划plustrace:set autotrace trace exp stat(SP2-0618. ...
- Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUM、ROWID)
Oracle Schema Objects Oracle Schema Objects——Tables——Oracle Data Types Oracle伪列 在Oracle数据库之中为了实现完整的关 ...
- Oracle Schema Objects——Synonyms
Oracle Schema Objects 同义词 同义词 = 表的别名. 现在假如说有一张数据表的名称是“USER1.student”,而现在又为这张数据表起了一个“USER1”的名字,以后就可以直 ...
- Oracle Schema Objects——Sequences(伪列:nextval,currval)
Oracle Schema Objects 序列的作用 许多的数据库之中都会为用户提供一种自动增长列的操作,例如:在微软的Access数据库之中就提供了一种自动编号的增长列(ID列).在oracle数 ...
- Oracle Schema Objects——Tables——Oracle Data Types
Oracle Schema Objects Oracle Data Types 数据类型 Data Type Description NUMBER(P,S) Number value having a ...
- Oracle Schema Objects——Tables——TableStorage
Oracle Schema Objects Table Storage Oracle数据库如何保存表数据? Oracle Database uses a data segment in a table ...
随机推荐
- 如今在 Internet 上流传的“真正”的程序员据说是这样的
如今在 Internet 上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让 领导提心吊胆. (2) 真正的程序员不写使用说明书, ...
- bootstrap -- css -- 图片
图片样式 .img-rounded:添加 border-radius:6px 来获得图片圆角 .img-circle:添加 border-radius:500px 来让整个图片变成圆形. img-ci ...
- Labview按钮的机械动作
LabVIEW 对于按钮控件的机械动作提供了六个不同的选择,它们可以通过右键按钮并选择机械动作来找到.这些不同的选项导致按钮输出的值的行为不同.下里将这六个选项做一个简短的总结: 单击时转换当用鼠标将 ...
- window设置TortoiseGit连接git不用每次输入用户名和密码
1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行(快捷键:win+r)”中打开%Home%,然后在目录下新建一个名为“_netrc ...
- Spring+Swagger文档无法排序问题解决
项目中用到swagger用于自动生成文档,遇到了好多结合后的问题.而对于这个排序问题,在查看了后端Swagger原代码之后,发现视乎当前使用的swagger(不是springfox,应该不是官方的,网 ...
- 在express项目中使用formidable & multiparty实现文件上传
安装 formidable,multiparty 模块 npm install formidable,multiparty –save -d 表单上传 <form id="addFor ...
- linux常用命令-tar,scp,du
tar 打包排除指定目录 tar -zcvf afish.tar.gz * --exclude=file1 --exclude=dir1 排除目录注意: 1.--exclude=file1 而不是 - ...
- linux 数据盘和系统盘的查看
系统盘就像linux的c盘,使用df -l命令查看 如下所示: 可以看到根路径 / 都是位于系统盘.而/root,/home,/usr就如同c盘下的c:\windows,c:\usr这些目录 如果单独 ...
- [java ] java.util.zip.ZipException: error in opening zip file
严重: Failed to processes JAR found at URL [jar:file:/D:/tools/apache-tomcat-7.0.64_2/webapps/bbs/WEB- ...
- Java精选笔记_JSP技术
JSP技术 JSP概述 什么是JSP 在JSP全名是Java Server Page,它是建立在Servlet规范之上的动态网页开发技术. 在JSP文件中,HTML代码与Java代码共同存在,其中,H ...