Home  >  Article  >  Database  >  Oracle中常见的数据库对象--视图

Oracle中常见的数据库对象--视图

WBOY
WBOYOriginal
2016-06-07 17:12:431447browse

数据库对象—视图: 一、视图的定义:从表中抽出的逻辑上相关的数据集合 a) 视图是一种虚表 b) 视图建立在已有表

数据库对象—视图:

一、视图的定义:从表中抽出的逻辑上相关的数据集合

a)         视图是一种虚表

b)         视图建立在已有表基础上,视图依赖已建立的这些表称为基表

c)         向视图提供数据内容的语句为SELECT语句,,可以将视图理解为存储起来的SElECT语句

d)         视图向用户提供基表数据的另一种表示形式

二、为什么要使用视图

a)         控制数据访问:提供了一种安全机制,通过视图显示数据时,屏蔽用户不应该知道的数据.

b)        简化查询:select语句构造了一个复杂的查询语句,每次使用必须都得调用它

c)         避免重复访问相同的数据

三、创建视图:

a)         在CREATE VIEW语句中嵌入子查询

i.              Create [OR REPLACE] [FORCE | NOFORCE] VIEW view [(alias  [,alias]…)]

AS subquerytion

[with check option [CONSTRAINT constraint ]]

[with read only [CONSTRAINT constraint]]

b)         子查询可以是复杂的SELECT语句

i.              CREATE VIEW empvu

AS   select employee_id,last_name,salary

FROM employees

WHERE    department_ed=80;

c)         描述视图结构:

i.              Describe empvu;

d)         创建视图时在子查询中给列定义别名

i.      SQL> create view usersview as select username name,password pass from users;

ii.      //查询视图

SQL> select * from usersview;

e)         使用CREATE OR REPLACE VIEW 子句修改视图

i.      SQL> create or replace view usersview as(select * from users);

f)    创建带有函数,groupby子句视图

i.      SQL> create or replace view gde as ( select deptno,count(*) cou from emp group by deptno);

g)    创建连接视图 带有函数 group by子句 order by 子句

i.      SQL> create view gdeo as select e.deptno,count(*) cou from emp e inner join dept d on e.deptno=d.deptno group by e.deptno order by e.deptno;

四、 视图中使用DML的规定

a)    可以在简单视图中执行DML操作

b)    当时图定义中包含以下元素之一是不能使用delete:

i.      组函数

ii.      GROUP BY 子句

iii.      DISTINCT 关键字

iv.      ROWNUM 伪列

c)    当视图定义中包含以下元素之一时不能使用update :

i.      组函数

ii.      GROUP BY子句

iii.      DISTINCT 关键字

iv.      ROWNUM 伪列

v.      列的定义为表达式

d)    可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作

d)任何 DML 操作都会返回一个Oracle server 错误

五、 删除视图

a)    Drop view 视图名;

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn