Oracle:视图(view)

视图的概念:从表中抽取出逻辑上相关的数据集合

视图相关概念

1.视图是一种续表

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

3.向视图提供数据内容的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句

视图的作用

1.控制数据访问

2.简化查询

3.避免重复访问相同的数据

理解:将经常重复访问的数据(对应到表中某些字段(可以是多表连接查询后的结果))新建成视图,可以大大的简化查询。

简单视图和复杂视图:复杂视图中有函数和分组(相当于形成了新表,于基表没有关系)

视图的创建和修改

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view

[(alias[, alias]…)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY [CONSTRAINT constraint]];

     如: CREATE VIEW   empvu80
          AS SELECT  employee_id, last_name, salary
          FROM    employees
          WHERE   department_id = 80;
                如: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;

当视图定义中包含以下元素之一时不能使用delete:

1.组函数

2.GROUP BY 子句

3.DISTINCT 关键字

4.ROWNUM 伪列

当视图定义中包含以下元素之一时不能使用update:

?组函数

?GROUP BY子句

?DISTINCT 关键字

?ROWNUM 伪列

?列的定义为表达式

当视图定义中包含以下元素之一时不能使insert:

?组函数

?GROUP BY 子句

?DISTINCT 关键字

?ROWNUM 伪列

?列的定义为表达式

?表中非空的列在视图定义中未包括

理解:主要需要记住的是rownum伪劣不能使用delete,其他的相当于形成了新表,

或是有约束条件的时候也不能delete,insert,有时候update也不行,视情况而定,

视图的主要作用是用于简化查询。

屏蔽DML操作:

使用:WITH READ ONLY

任何 DML 操作都会返回一个Oracle server 错误

**删除视图:**DROP VIEW view

TOP-N 分析:

Top-N 分析查询一个列中最大或最小的 n 个值

最大和最小的值的集合是 Top-N 分析所关心的

SELECT [column_list], ROWNUM

FROM (SELECT [column_list]

FROM table

ORDER BY Top-N_column)

WHERE ROWNUM <= N;

**注意:

对 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。**

如:查询员工表中,工资排名在40-50之间的员工信息。

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

谁知道Markdown编辑器怎么进行缩进,有点小郁闷,排版都乱了。

时间: 2024-11-03 21:40:48

Oracle:视图(view)的相关文章

Oracle 视图view

在我看来,oracle的视图就是用于将多个表的关联查询结果映射成[临时表],视图与系统表中的数据是实时对应的. 我们可以像操作表的查询一样来操作视图查询. 视图写法: CREATE OR REPLACE FORCE VIEW V_TEM ( ID, NAME ) AS SELECT ID,NAME FROM TABLE 项目中的一个案例,将一个自关联的结构表(行转多列)体现组织结构:市-区县-网格-乡镇-渠道 用到的知识点: 1.SYS_CONNECT_BY_PATH(字段,间隔符)    示例

Oralce 视图 view

Oracle视图 Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表. 视图是存储在数据字典里的一条select语句.通过创建视图可以提取数据的逻辑上的集合或组合. 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分. 2.用户通过简单的查询可以从复杂查询中得到结果. 3.维护数据的独立性,试图可从多个表检索数据. 4.对于相同的数据可产生

Oracle Materialized View refresh

简述 Materialized views - 物化视图 - 简称 MV,是已经被存储的或者说被物化-'materialized' 成 schema对象的查询结果.其中查询的 'From' 子句可以给 table, view 和 materialized view命名.这些用来建立 MV的对象都可以被称为 主表-master tables (a replication term) 或者 具体表-detail tables (a data warehousing term). Refresh Pr

Oracle视图详解

转载自:http://blog.itpub.net/29785807/viewspace-1270120/ 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行SQL. 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中.那些用于产生视图的表叫做该视图的基表.一个视图也可以从另一个视图中产生. 视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中.通

oracle视图建主键

一个项目要求视图建主键,下面是一个例子 CREATE or replace VIEW SME_V_A....  (AGENTID,AGENTNAME,BUSYNUM,RESTNUM,RESTTIME,DEVICENONUM,DEVICENOSUM ,CONSTRAINT AGENTSTATIC_PK PRIMARY KEY (AGENTID) RELY DISABLE NOVALIDATE) AS SELECT A.AGENTID as AGENTID, ---座席编号 (SELECT B.OP

ORACLE视图添加备注

ORACLE视图添加备注 版权声明:本文为博主原创文章,未经博主允许不得转载. create or replace view oes_material_series_ref as select t.productgroup, o.idnrk materialcode, t.seriescode   from oes_park_priority t  inner join oms_hm_mtl_general_view v     on t.materialcode = v.material_co

Oracle 视图简单介绍

Oracle视图的种类 关系视图 关系视图:Oracle视图是作为数据库对象存在的,因此,创建之后也可以通过工具或数据字典来查看视图的相关信息.这是大家常用的视图 如:create view 视图名称 as 查询语句|关系运算 http://blog.csdn.net/tianlesoftware/article/details/5530618 内嵌视图 内嵌视图:在from语句中的可以把表改成一个子查询,如:select a.id ,b.id from emp a,(select id fro

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

使用RazorGenerator对视图View进行单元测试

在ASP.NET MVC里我们可以很方便的对模型Model.控制器Controller进行单元测试,但对于 视图View的测试就没那么容易和直接了.在这里介绍一种方法,使用RazorGenerator对View进行 单元测试. 废话不多说,直接上图.主要方法和步骤如下: 1.创建ASP.NET MVC 项目和相应的测试项目. 2.在Web项目中nuget添加包:RazorGenerator.MsBuild. 3.在测试项目中nuget添加包:RazorGenerator.Testing:添加包

Oracle视图

创建视图,把emp表sal<1000的雇员,映射到该视图( view) create or replace view myview as select * from tb_Employee where sal<1000 with read only constraint; 为了简化操作,用视图解决,显示雇员雇员号,姓名和部门名称 create view myview2 as select tb_Employee.empno,tb_Employee.ename,tb_Department.dna