因为在访问数据时会经常对一部分数据进行重复访问,并且每次访问都要重新的查出来才能使用,这样就显得很麻烦,效率也不高!所以有了视图后这个问题才得以完善!使用视图优点:控制数据访问、简化查询、避免重复访问相同的数据简单视图和复杂视图!
1.create view创建视图
在 create view语句中嵌入子查询
子查询可以是复杂的 select语句
创建视图时在子查询中给列定义别名
在选择视图中的列时应使用别名
格式:create view 视图名 as 子查询
例子:
2.describe描述视图结构
格式:describe 表名
例子:
3.查询视图
格式:select *from 视图名;
例子:
4.create or replace view创建或修改视图
使用create or replace view 子句修改视图
create view子句中各列的别名应和子查询中各列相对应
格式:create or replace view 视图名 as 子查询
例子:
5.drop view删除视图
删除视图只是删除视图的定义,并不会删除基表的数据
格式:drop view 视图名;
例子:
6.Top-N 分析
所谓的Top-N含义:根据某一规则进行排序,然后取其前N行数据。
Top-N 分析中主要是使用到rownum伪列关键字进行标记使用!
rownum:伪列,数据表中本身没有这样的列,是oracle数据库为每个数据表加上的列,可以标识别行号,默认情况下,rownum按主索引来排序,若没有主索引则自然排序。
但rownum只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。
例子:
7.with read only屏蔽 DML 操作
可以使用 with read only选项屏蔽对视图的DML 操作
任何 DML 操作都会返回一个Oracle server 错误
格式:create or replace view 视图名 as 子查询 with read only;
例子:
视图中使用DML的规定:
可以在简单视图中执行 DML 操作
当视图定义中包含以下元素之一时不能使用delete:
组函数
group by 子句
distinct关键字
rownum伪列
当视图定义中包含以下元素之一时不能使用update:
组函数
group by 子句
distinct关键字
rownum伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使用insert:
组函数
group by 子句
distinct关键字
rownum伪列
列的定义为表达式
表中非空的列在视图定义中未包括