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 ...
随机推荐
- 你需要知道的Nginx配置二三事
做服务端开发的,工作中难免会遇到处理Nginx配置相关问题.在配置Nginx时,我一直本着“照葫芦画瓢”的原则,复制已有的配置代码,自己修修改改然后完成配置需求,当有人问起Nginx相关问题时,其实仍 ...
- HDU 1043 Eight(反向BFS+打表+康托展开)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 题目大意:传统八数码问题 解题思路:就是从“12345678x”这个终点状态开始反向BFS,将各 ...
- 20165301 2017-2018-2 《Java程序设计》第三周学习总结
20165301 2017-2018-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章:类与对象 类: 类的声明:class+类名 类体:成员变量的声明+方法(局部变量+语 ...
- springboot 零xml集成mybatis
maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- day5冒泡排序
冒泡排序:是一种基础的算法,实现数据的排序,排序的原则是前一个与后一个进行比较,如果前面的值大则交换,否则不交换,多次循环每次把最大的数据循环至后面就能够完成所需. 上面的图是冒泡排序的原理,每次循环 ...
- python使用smtplib库和smtp.qq.com邮件服务器发送邮件
使用qq的邮件服务器需要注意的两个地方主要是: 1.协议问题 使用465端口 SSL 协议 2.口令问题 出现SMTPAuthenticationError 主要的原因就是口令和帐号信息不对,这里我们 ...
- 【转载】Picasso下载器
Github源码地址:https://github.com/JakeWharton/picasso2-okhttp3-downloader 使用方法: Gradle: compile 'com.jak ...
- Mat矩阵(图像容器)创建及CV_8UC1、CV_8UC2等参数详解
CV_<bit_depth>(S|U|F)C<number_of_channels> 1--bit_depth---比特数---代表8bite,16bites,32bites, ...
- mcnp的重复探测器单元计数-fmesh卡的介绍
第一步:首先前面是cell surface和material等的定义,忽略,然后写上下面的这些抽样信息等.最后写入fmesh卡的信息定义 第二步:计算上述输入卡,得到结果,显然不在outx,x代表p ...
- FastReport.Net使用:[1]屏蔽打印对话框
1.如何设置默认打印机 在FastReport设计界面找到File->Printer Setup菜单,运行该菜单显示“打印机设置”对话框.在打印机(Printer)列表中选择默认打印机,并勾上“ ...