Oracle数据库——视图

Oracle数据库中的视图是一种虚拟表,基于已有表的SELECT语句,提供数据的另一种表现形式。视图用于控制数据访问,简化查询,并减少重复查询。简单视图不包含函数,而复杂视图则使用了函数。可以创建、修改和删除视图,但视图的DML操作有一定限制,如不能更新包含组函数、GROUP BY、DISTINCT等的视图。同时,可以通过with read only选项阻止DML操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、常见的数据库对象

对象描述
基本的数据存储集合,由行和列组成。
视图从表中抽出的逻辑上相关的数据集合
序列提供有规律的数值
索引提高查询的效率
同义词给对象起别名

2、什么是视图:

视图是一种虚表。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式

直白点说就是,视图就是一段sql语句,通过执行这段语句查询出的一个表,这个表就叫视图,这个表只能看,无法改。
简单视图和复杂视图的区别:

简答的说,简单视图没有使用函数,复杂视图用函数了。

为什么使用视图:

控制数据访问
简化查询
避免重复访问相同的数据

3、创建视图

CREATE VIEW 	empvu80
 AS SELECT  employee_id  id, last_name  name, salary
    FROM    employees
    WHERE   department_id = 80;

empvu80:视图名
employee_id:表列名
id:视图名(别名)
employees:表名

4、修改视图

使用 or replace 子句修改视图

creat  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;

5、屏蔽 DML 操作

(对数据操作叫做:DML)
可以使用 with read only 选项屏蔽对视图的DML 操作
任何 DML 操作都会返回一个Oracle server 错误

creat   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;
   with read only

6、视图中使用DML的规定

当视图定义中包含以下元素之一时不能使用delete:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列

当视图定义中包含以下元素之一时不能使用update:
组函数
GROUP BY子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式

当视图定义中包含以下元素之一时不能使insert:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
表中非空的列在视图定义中未包括

7、删除视图

DROP VIEW empvu80;

empvu80:视图名

8、Top-N 分析

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

SELECT [column_list], ROWNUM  
FROM   (SELECT [column_list] 
        FROM table
        ORDER  BY Top-N_column)
WHERE  ROWNUM <=  N;

注意:
对 rownum 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。
查询一段范围:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值