当前位置:Gxlcms > mysql > Oracle中常见的数据库对象--视图

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

时间:2021-07-01 10:21:17 帮助过:45人阅读

数据库对象—视图: 一、视图的定义:从表中抽出的逻辑上相关的数据集合 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

人气教程排行