网站首页 > 文章中心 > 其它

oracle视图怎么创建

作者:小编 更新时间:2023-08-16 11:42:41 浏览量:106人看过

Oracle中如何建视图

Oracle中创建视图

Oracle的数据库对象分为五种:表,视图,序列,索引和同义词.

视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.

视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数据的逻辑上的集合或组合.

视图的优点:

①对数据库的访问,因为视图可以有选择性的选取数据库里的一部分.

视图分为简单视图和复杂视图:

简单视图只从单表里获取数据

复杂视图从多表

简单视图不包含函数和数据组

复杂视图包含

简单视图可以实现DML操作

复杂视图不可以.

视图的创建:

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操作.

例如:

CREATE OR REPLACE VIEW dept_sum_vw

(name,minsal,maxsal,avgsal)

AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname;

视图的定义原则:

①视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;

ORDER BY 子句;

权限.

视图的查询:

视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样.

还可以查询视图的全部信息和指定的数据行和列.

如:

检索数据:

SQLSELECT * FROM dept_sum_vw;

查询视图定义:

SELECT view_name,text from user_views;

其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS

得到相关信息.

修改视图:

通过OR REPLACE 重新创建同名视图即可.

视图上的DML 操作:

DML操作应遵循的原则:

①简单视图可以执行DML操作;

删除数据行;

a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;

b.使用表达式定义的列;

c.ROWNUM伪列.

d.基表中未在视图中选择的其他列定义为非空且无默认值.

视图可用于保持数据库的完整性,但作用有限.

通过视图执行引用完整性约束可在数据库级执行约束.

WITH CHECK OPTION 子句限定:

通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,

因为它会对插入或修改的数据行执行完整性约束和数据有效性检查.

AS SELECT * FROM emp

视图 已建立.

查询结果:

EMPNO ENAME JOB

--------------------- -------------- -------------

修改:

将产生错误:

*

ERROR 位于第一行:

视图的删除:

DROP VIEW VIEW_NAME语句删除视图.

删除视图的定义不影响基表中的数据.

只有视图所有者和具备DROP VIEW权限的用户可以删除视图.

视图被删除后,基于被删除视图的其他视图或应用将无效.

oracle如何创建视图?

create

or

replace

view

视图名

as

...;

基本的创建命令:

比如:创建表book的一张视图

view_book

select

from

book

where

book_id

='001';

使用视图,就用select

view_book;

当然了,使用

图形化界面

更方便.

Oracle物化视图

①.、直接创建

CREATE MATERIALIZED VIEW MV_NAME

AS

....

Step1:

CREATE TABLE MV_NAME

CREATE MATERIALIZED VIEW MV_NAME

ON PREBUILT TABLE [with reduced precision] -- 这是可选的.当创建时遇到某字段精度报错时使用.

REFRESH FORCE ON DEMAND

START WITH SYSDATE

?第一种方式更方便快捷,但缺点是当删除或重建物化视图时,数据将被删除,在某些情况下,这种方式是不可接受的.

?第二种方式更符合数据高可用原则,数据更新的衔接性更好,但当修改物化视图时(比如,字段增减),需先对同名表进行修改,操作稍显繁琐.

?具体选择哪种方式,需看具体的业务需求.

oracle如何创建视图

create?view?V_StudInfo

select?a.学号,a.姓名,b.课程号,b.课程名,

else?'不及格'?end?成绩等级

from?学生表?a,课程表?b,?成绩表?c?where?a.学号=c.学号

and?b.课程号=c.课程号

create?view?V_Stud

select?a.学号,a.姓名,count(*)?所修科目数,avg(成绩)?平均成绩

and?a.学号?in

(select?a.学号

表名和字段名,自己跟你实际的核对一下,不同的改一下

以上就是土嘎嘎小编为大家整理的oracle视图怎么创建相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章