视图:
视图是一种虚表,建立在已有表的基础上,视图赖以建立的这些表称为基表向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句.视图向用户提供基表数据的另一种表现形式
使用视图的原因:
控制数据访问
简化查询
避免重复访问相同的数据
创建视图
create [or replace] [force|noforce] view viewName[(alias[,alias]...)]
as subquery
[with check option[constraint constraintName]]
[ with read only[constraint constraintName]];
例子:
create view emp_view
as select * from employees;
修改视图
使用create or replace view子句修改视图
create or replace view empvu80
(id_number,name,sal,department_id)
as select employeee_id,first_name||''||last_name, salary,department_id
from employees
where department_id=80;
create view子句中各列的别名应和子查询中的各列相对应
视图中使用DML规定
可以在简单视图中执行DML操作
当试图定义中包含以下元素之一时不能使用delete
组函数
group by子句
distinct关键字
rownum伪列
当视图定义中包含以下原书之一时不能使用update:
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使用insert:
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
表中非空的列在视图定义中未包括\
屏蔽DML操作
使用with read only选项屏蔽对视图的DML操作
任何DML操作都会返回一个Oracle server错误
例子
create or replace view empvu10
( employee_number,employee_name,job_title)
as se;ect employee_id,last_name,job_id
from employees
where department_id=10
with read only;
删除视图
删除视图只是删除视图的定义,并不会删除基表的数据
drop view viewName;
top-N分析
Top-N分析查询一个列中最大或最小的n个值,最大和最小的值的集合是Top-N分析所关心的
查询最大的几个值的Top-N分析:
select[column_list], rownum
from (select[column_list]
from table
order by Top-N_column)
where rownum<=n;
例如:查询工资最高的三名员工:
select rownum as rank, last_name,salary
from (select last_name,salary,from employees
order by salary desc)
where rownum<=3;
---------
视图是一种虚表,建立在已有表的基础上,视图赖以建立的这些表称为基表向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句.视图向用户提供基表数据的另一种表现形式
使用视图的原因:
控制数据访问
简化查询
避免重复访问相同的数据
创建视图
create [or replace] [force|noforce] view viewName[(alias[,alias]...)]
as subquery
[with check option[constraint constraintName]]
[ with read only[constraint constraintName]];
例子:
create view emp_view
as select * from employees;
修改视图
使用create or replace view子句修改视图
create or replace view empvu80
(id_number,name,sal,department_id)
as select employeee_id,first_name||''||last_name, salary,department_id
from employees
where department_id=80;
create view子句中各列的别名应和子查询中的各列相对应
视图中使用DML规定
可以在简单视图中执行DML操作
当试图定义中包含以下元素之一时不能使用delete
组函数
group by子句
distinct关键字
rownum伪列
当视图定义中包含以下原书之一时不能使用update:
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使用insert:
组函数
group by子句
distinct关键字
rownum伪列
列的定义为表达式
表中非空的列在视图定义中未包括\
屏蔽DML操作
使用with read only选项屏蔽对视图的DML操作
任何DML操作都会返回一个Oracle server错误
例子
create or replace view empvu10
( employee_number,employee_name,job_title)
as se;ect employee_id,last_name,job_id
from employees
where department_id=10
with read only;
删除视图
删除视图只是删除视图的定义,并不会删除基表的数据
drop view viewName;
top-N分析
Top-N分析查询一个列中最大或最小的n个值,最大和最小的值的集合是Top-N分析所关心的
查询最大的几个值的Top-N分析:
select[column_list], rownum
from (select[column_list]
from table
order by Top-N_column)
where rownum<=n;
例如:查询工资最高的三名员工:
select rownum as rank, last_name,salary
from (select last_name,salary,from employees
order by salary desc)
where rownum<=3;
---------