image

编辑人: 舍溪插画

calendar2025-04-26

message1

visits183

Oracle基本操作笔试面试题之视图操作

视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数

据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询

语句。视图的数据都来自于某些表,这些表被称为基表。通过视图来查看表,就像是从不同的角度

来观察一个(或多个)表。

视图有如下一些优点:

a可以提高数据访问的安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访

问表的全部行和列。

b简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询,用户对视图的

检索却很简单。

c一个视图可以检索多张表的数据,因此用户通过访问一个视图,可完成对多个表的访问。

d视图是相同数据的不同表示,通过为不同的用户创建同一个表的不同视图,使用户可分别访

问同一个表的不同部分。视图可以在表能够使用的任何地方使用,但在对视图的操作上同表相

比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和

触发器在视图上将同样起作用。

1、视图创建

create [or replace] [force|noforce] view view_name

[(alias[,alias]…)]

as subquery

[with check option [constraint constraint]]

[with read only]

例如:

创建视图 empv,该属兔仅包含 10部门雇员的细节信息。

create view empv

as select empno,ename,job

from  emp

where deptno=10;

别名的使用

 

1create or replace view salv

as select empno employee_id,ename name,sal salary

from emp where deptno=30;

2create or replace view salv

(employee_id,name,salary)

as select empno,ename,sal

from emp

where deptno=30;

创建复杂视图

例:创建一个基于两个表并且含有组函数的复杂视图

create or replace view dept_sum_v(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;

2、视图操作

查看视图

数据字典 USER_VIEWS

select view_name,text from user_views;

从视图检索数据

select * from salv;

视图上执行 DML操作

a)如果视图包含以下内容,则不能实现对数据的修改:

-GROUP函数、GROUP BY子句、DISTINCT关键字

使用表达式定义的列

-ROWNUM伪列

b)如果视图中包含以下内容则不能删除数据行

-GROUP函数

-GROUP BY子句

-DISTINCT关键字

-ROWNUM伪列

WITH CHECK OPTION子句

如果要确保在视图上执行的插入、更新操作仅限于一定的范围,便可使用 WITH CHECK

OPTION子句

例:

create or replace view empv

as select * from emp where deptno=20


with check option constraint empv_ck;

测试一:update empv set deptno=10 where empno=7369

结果:

ERROR位于第 1:

ORA-01402:视图 WITH CHECK OPTIDN违反 where子句

测试二:update empv set sal=2000 where empno=7369

结果:已更新 1行。

拒绝 DML操作

在视图定义时使用 WITH READ ONLY选项可以确保不能对视图执行 DML操作

例:

create or replace view empv(employee_id,employ_name,job_title)

as select empno,ename,job from emp where deptno=10

with read only;

3、视图删除

删除视图并不会删除数据,因为视图是基于数据库中的基表

DROP VIEW view_name;

例:DROP VIEW empv;

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:Oracle基本操作笔试面试题之视图操作

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share