视图定义:

— —视图是一种虚表。

— —视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。

— —向视图提供数据内容的语句为 SELECT 语句, 能够将视图理解为存储起来的 SELECT 语句.


— —视图向用户提供基表数据的还有一种表现形式

为什么使用视图?

— —控制数据訪问

— —简化查询

— —避免反复訪问同样的数据

创建视图:在 CREATE VIEW 语句中嵌入子查询,子查询能够是复杂的 SELECT 语句

<span style="font-size:14px;">create or replace view empview
as
select employee_id emp_id,last_name name,department_name
from employees e,departments d
Where e.department_id = d.department_id</span>

创建视图时在子查询中给列定义别名:在选择视图中的列时应使用别名

<span style="font-size:14px;">CREATE VIEW  salvu50
AS
SELECT employee_id ID_NUMBER,
last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
View created.</span>

查询视图:SELECT  *  FROM    salvu50;

改动视图:使用CREATE OR REPLACE VIEW 子句改动视图

<span style="font-size:14px;">CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS SELECT employee_id, first_name || ' ' || last_name,
salary, department_id
FROM employees
WHERE department_id = 80;
View created.</span>

CREATE VIEW 子句中各列的别名应和子查询中各列相相应



创建复杂视图举例:

<span style="font-size:14px;">CREATE VIEW	dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_name;
View created.</span>

视图中使用DML的规定:

能够在简单视图中运行 DML 操作

当视图定义中包括下面元素之中的一个时不能使用delete:

— —组函数

— —GROUP BY 子句

— —DISTINCT keyword

— —ROWNUM 伪列

<span style="font-size:14px;">create or replace view sal_view
as select
avg(salary) avg_sal from employees
group by department_id
</span>

当视图定义中包括下面元素之中的一个时不能使用update:

— —组函数

— —GROUP BY子句

— —DISTINCT keyword

— —ROWNUM 伪列

— —列的定义为表达式

当视图定义中包括下面元素之中的一个时不能使insert:

— —组函数

— —GROUP BY 子句

— —DISTINCT keyword

— —ROWNUM 伪列

— —列的定义为表达式

— —表中非空的列在视图定义中未包含

屏蔽 DML 操作:

能够使用 WITH READ ONLY 选项屏蔽对视图的DML 操作

不论什么 DML 操作都会返回一个Oracle server 错误

<span style="font-size:14px;">CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY;
View created.</span>

删除视图:删除视图仅仅是删除视图的定义,并不会删除基表的数据

<span style="font-size:14px;">DROP VIEW empvu80;
View dropped.</span>

Top-N 分析:

查询最大的几个值的 Top-N 分析:

<span style="font-size:14px;">SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;</span>

注意:

对 ROWNUM 仅仅能使用 < 或 <=, 而用 =, >, >= 都将不能返回不论什么数据。

<span style="font-size:14px;">select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40</span>

oracle视图总结(创建、查询、改动、删除等)的更多相关文章

  1. oracle下session的查询与删除

    oracle下session的查询与删除 1.查询当前session SQL> select username,sid,serial# from v$session where username ...

  2. oracle 视图的创建,游标,left join

    视图的创建: create or replace view dmv_mat_contract_stock_in_bill as select csib.*, sib.STOCK_IO_, sib.CO ...

  3. Oracle DBlink的创建-查看与删除

    DBlink常用于在两个Oracle数据库之间相互连接,如手工同步数据时,DBLink是最方便快捷的手段之一. 1.创建DBLink语法:create public database link < ...

  4. MySQL/Oracle视图的创建与使用

    1.什么是视图? 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成.   2.视图的特点. 视图中的数据并不属于视图本身,而是属于基本的表,对视 ...

  5. oracle中session的查询与删除

    1. 查询连接的session select sid,serial#,username,program,machine,status from v$session 查询的结果如下,可以根据机器和登录的 ...

  6. Oracle学习笔记(1)——查询及删除重复数据

      1.查找表中多余的重复记录(根据单个字段studentid)   select * from table_name where studentid in (select studentid fro ...

  7. ORACLE视图简单创建和使用

    1.创建 create view v (pdate,goodsId,productionId,qty)列名 as select p.pdate,p.goodsId,p.productionId,sum ...

  8. oracle坚决不挂01(表,索引,视图的创建,修改,删除,查询)

    考试快来了,来篇oracle干货,复习一下(挣扎一下) 废话不多说,开始写! 这篇是数据库对象的有关操作的总结! 数据库对象有熟悉的表,视图,索引,序列,同义词等(这个oracle东西真不少,小声bb ...

  9. oracle 物化视图及创建索引

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...

  10. Oracle02——oracle分页、子查询、集合运算、处理数据、创建和管理表和其他数据库对象

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7289451.html --oracle分页(Pageing Query) select ...

随机推荐

  1. acm专题---拓扑排序+优先队列

    struct node{ int id; int cnt; node(int _id,int _cnt):id(_id),cnt(_cnt){} bool operator<(node a) c ...

  2. BeanUtils封装对象时一直提示ClassNotFoundException:org.apache.commons.beanutils.BeanUtils

    导包明明正确了,依赖包也全都导对了,还是出错. 困扰了3天. 后来看到这篇博文,https://blog.csdn.net/yanshaoshuai/article/details/81624890 ...

  3. PYTHON学习(三)之利用python进行数据分析(1)---准备工作

    学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据 ...

  4. python实现IMAP协议下email收取

    本文为转载,原文在这里. 所谓无痕取信,目前主要是指从邮箱中把信件收取后,邮箱内状态不发生任何改变.这里的状态主要是指两部分,一部分是邮件状态不变,即已读与未读状态不变,另一部分是指邮箱记录的登陆IP ...

  5. 面试的65个回答技巧-适用于BAT公司

    互联网职业群分享的资料,里面大多是BAT公司的人,很多是猎头.这些技巧对于职场人来说,是非常宝贵的. 1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验 ...

  6. [hdu4667]Building Fence 计算几何 瞎瘠薄搞

    大致题意: 给出n个圆和m个三角形,求最小的的,能将所有图形覆盖的图形的周长. 正解为求所有三角形顶点与圆的切点以及圆和圆的切点构造凸包,再求路径. 因为要求结果误差<=1e-3 所以 我们可以 ...

  7. (转) redis的事务和watch

    redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的. redis中的事务定义 Redis中的事务(transaction)是一组命令的集合. 事务同 ...

  8. python计数器Count

    python计数器Count # -*- coding:utf-8 -*- """ python计数器Counter 需导入模块collections "&qu ...

  9. 【左偏树+贪心】BZOJ1367-[Baltic2004]sequence

    [题目大意] 给定一个序列t1,t2,...,tn ,求一个递增序列z1<z2<...<zn , 使得R=|t1−z1|+|t2−z2|+...+|tn−zn| 的值最小.本题中,我 ...

  10. 置换python2.7.13的opcode遇到的一些坑

    主要有两个坑 1.XXXSLICE相关的opcode #define SLICE #define SLICE_1 #define SLICE_2 #define SLICE_3 #define STO ...