oracle视图总结(创建、查询、改动、删除等)
视图定义:
— —视图是一种虚表。
— —视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
— —向视图提供数据内容的语句为 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视图总结(创建、查询、改动、删除等)的更多相关文章
- oracle下session的查询与删除
oracle下session的查询与删除 1.查询当前session SQL> select username,sid,serial# from v$session where username ...
- oracle 视图的创建,游标,left join
视图的创建: create or replace view dmv_mat_contract_stock_in_bill as select csib.*, sib.STOCK_IO_, sib.CO ...
- Oracle DBlink的创建-查看与删除
DBlink常用于在两个Oracle数据库之间相互连接,如手工同步数据时,DBLink是最方便快捷的手段之一. 1.创建DBLink语法:create public database link < ...
- MySQL/Oracle视图的创建与使用
1.什么是视图? 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成. 2.视图的特点. 视图中的数据并不属于视图本身,而是属于基本的表,对视 ...
- oracle中session的查询与删除
1. 查询连接的session select sid,serial#,username,program,machine,status from v$session 查询的结果如下,可以根据机器和登录的 ...
- Oracle学习笔记(1)——查询及删除重复数据
1.查找表中多余的重复记录(根据单个字段studentid) select * from table_name where studentid in (select studentid fro ...
- ORACLE视图简单创建和使用
1.创建 create view v (pdate,goodsId,productionId,qty)列名 as select p.pdate,p.goodsId,p.productionId,sum ...
- oracle坚决不挂01(表,索引,视图的创建,修改,删除,查询)
考试快来了,来篇oracle干货,复习一下(挣扎一下) 废话不多说,开始写! 这篇是数据库对象的有关操作的总结! 数据库对象有熟悉的表,视图,索引,序列,同义词等(这个oracle东西真不少,小声bb ...
- oracle 物化视图及创建索引
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...
- Oracle02——oracle分页、子查询、集合运算、处理数据、创建和管理表和其他数据库对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7289451.html --oracle分页(Pageing Query) select ...
随机推荐
- acm专题---拓扑排序+优先队列
struct node{ int id; int cnt; node(int _id,int _cnt):id(_id),cnt(_cnt){} bool operator<(node a) c ...
- BeanUtils封装对象时一直提示ClassNotFoundException:org.apache.commons.beanutils.BeanUtils
导包明明正确了,依赖包也全都导对了,还是出错. 困扰了3天. 后来看到这篇博文,https://blog.csdn.net/yanshaoshuai/article/details/81624890 ...
- PYTHON学习(三)之利用python进行数据分析(1)---准备工作
学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据 ...
- python实现IMAP协议下email收取
本文为转载,原文在这里. 所谓无痕取信,目前主要是指从邮箱中把信件收取后,邮箱内状态不发生任何改变.这里的状态主要是指两部分,一部分是邮件状态不变,即已读与未读状态不变,另一部分是指邮箱记录的登陆IP ...
- 面试的65个回答技巧-适用于BAT公司
互联网职业群分享的资料,里面大多是BAT公司的人,很多是猎头.这些技巧对于职场人来说,是非常宝贵的. 1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验 ...
- [hdu4667]Building Fence 计算几何 瞎瘠薄搞
大致题意: 给出n个圆和m个三角形,求最小的的,能将所有图形覆盖的图形的周长. 正解为求所有三角形顶点与圆的切点以及圆和圆的切点构造凸包,再求路径. 因为要求结果误差<=1e-3 所以 我们可以 ...
- (转) redis的事务和watch
redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的. redis中的事务定义 Redis中的事务(transaction)是一组命令的集合. 事务同 ...
- python计数器Count
python计数器Count # -*- coding:utf-8 -*- """ python计数器Counter 需导入模块collections "&qu ...
- 【左偏树+贪心】BZOJ1367-[Baltic2004]sequence
[题目大意] 给定一个序列t1,t2,...,tn ,求一个递增序列z1<z2<...<zn , 使得R=|t1−z1|+|t2−z2|+...+|tn−zn| 的值最小.本题中,我 ...
- 置换python2.7.13的opcode遇到的一些坑
主要有两个坑 1.XXXSLICE相关的opcode #define SLICE #define SLICE_1 #define SLICE_2 #define SLICE_3 #define STO ...