视图定义:

— —视图是一种虚表。

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

— —向视图提供数据内容的语句为 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. SQL:select case when 的用法

    CASE 可能是 SQL 中被误用最多的关键字之一.虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法.例如,你可以在 WHERE 子句中使用 CASE. 首先让我们看一下 CASE 的语法 ...

  2. ImageNet Classification with Deep Convolutional Neural Network(转)

    这篇论文主要讲了CNN的很多技巧,参考这位博主的笔记:http://blog.csdn.net/whiteinblue/article/details/43202399 https://blog.ac ...

  3. c++ primer 9 顺序容器

    定义: #include <vector> #include <list> #include <deque> vector<int> svec; lis ...

  4. Asp.net vNext 学习之路(二)

    View component(视图组件)应该是MVC6 新加的一个东西,类似于分部视图.本文将演示在mvc 6中 怎么添加视图组件以及怎么在视图中注入一个服务. 本文包括以下内容: 1,创建一个新的a ...

  5. jquery和原生js-ajax

    form表单 $('#submit').click(function(){ $('#form').serialize(); //会根据input里面的name,把数据序列化成字符串:eg:name=y ...

  6. 使用minikube在windows构建kubernetes群集

    只建议在开发环境中使用,不建议在windows下使用docker或者kubernetes. 1. 安装VirtualBox或者Hyper-v(安装步骤略) 2. 下载kubectl和minikube工 ...

  7. 【BZOJ 3442】 3442: 学习小组 (最大费用流)

    3442: 学习小组 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 403  Solved: 193 Description [背景] 坑校准备鼓励学生 ...

  8. 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)

    1566: [NOI2009]管道取珠 Time Limit: 20 Sec  Memory Limit: 650 MBSubmit: 1659  Solved: 971 Description In ...

  9. dp洋洋散散的知识+code

    /*在数轴上有0-N的位置 从0出发每次可以向右走 2 23 233步*/ // 1 总共的方案数 f[i]=f[i-]+f[i-]+f[i-]; f[]=; ;a<=n;a++) { ) f[ ...

  10. POJ 1655 BalanceAct 3107 Godfather (树的重心)(树形DP)

    参考网址:http://blog.csdn.net/acdreamers/article/details/16905653   树的重心的定义: 树的重心也叫树的质心.找到一个点,其所有的子树中最大的 ...