oracle查看视图定义语句_Oracle视图

oracle查看视图定义语句_Oracle视图本节介绍 Oracle 视图 视图是 Oracle 数据库中的一个重要组件 Oracle 视图教程列表按照下面的教程了解更多关于 Oracle 视图 创建视图 使用 CREATEVIEW 语句创建一个新的视图 删除视图 使用 DROPVIEW 语句从数据库中删除视图 可更新的视图 讨论如何创建可更新的视图 内联视图 了解如何使用内联视图来简化复杂的查询并将几个单独的查询压缩为一个查询 WITHCH

本节介绍Oracle视图,视图是Oracle数据库中的一个重要组件。

Oracle视图教程列表

按照下面的教程了解更多关于Oracle视图:

创建视图 – 使用CREATE VIEW语句创建一个新的视图。

删除视图 – 使用DROP VIEW语句从数据库中删除视图。

可更新的视图 – 讨论如何创建可更新的视图。

内联视图 – 了解如何使用内联视图来简化复杂的查询并将几个单独的查询压缩为一个查询。

WITH CHECK OPTION – 如何使用CREATE VIEW命令的WITH CHECK OPTION子句保护视图。

Oracle视图介绍

查询的结果是派生表,如以下示例所示:

SELECT

name,

credit_limit

FROM

customers;

执行上面查询语句,得到以下结果 –

oracle查看视图定义语句_Oracle视图

派生表由包含许多行的名称和贷记限额(credit_limit)列组成。它仅包含Customers表中的部分数据。

如果给这个查询一个名字,那么就是一个视图。 这就是为什么有时将视图被称为命名查询。

因此,根据定义,视图是一个“虚拟”表,其数据是存储查询的结果,每次查询视图时都会导出该查询。

视图是一个虚拟表,因为您可以在SQL查询中像使用表一样使用它。 每个视图都有数据类型的列,因此可以使用INSERT,UPDATE,DELETE和MERGE语句对视图执行查询或管理其内容(有一些限制)。

与表不同,视图不会存储任何数据。 准确地说,一个视图只是行为与表相似。 这只是一个存储在数据库中的命名查询。从视图中查询数据时,Oracle使用此存储的查询从基础表中检索数据。

假设将查询分配给名为customer_credits的名称作为一个视图,那么从该视图查询数据,如下:

SELECT

*

FROM

customer_credits;

在后端,Oracle查找与名称customer_credits关联的存储查询并执行以下查询:

SELECT

*

FROM

(

SELECT

name,

credit_limit

FROM

customers

);

在这个例子中,customers表被称为基表。 此外,定义视图的查询称为定义查询。

从customer_credits视图返回的结果集取决于基础表(此示例中是customers表)的数据。 customer_credits视图也取决于customers表的结构。 如果重命名或删除查询引用的某个列(如name或credit_limit),则视图 – customer_credits将不再起作用。

何时使用Oracle视图

在很多情况下,可以将视图用于不同的目的。最常见的用法如下:

简化数据检索。

保持逻辑数据独立性。

实施数据安全。

1. 简化数据检索

视图有助于显着简化数据检索。 首先,构建一个复杂的查询,仔细测试,并将查询封装在视图中。 然后,可以通过视图访问基础表的数据,而不是一遍又一遍地重写整个查询。

以下查询按年份返回客户的销售金额:

SELECT

name AS customer,

SUM( quantity * unit_price ) sales_amount,

EXTRACT(

YEAR

FROM

order_date

) YEAR

FROM

orders

INNER JOIN order_items

USING(order_id)

INNER JOIN customers

USING(customer_id)

WHERE

status = ‘Shipped’

GROUP BY

name,

EXTRACT(

YEAR

FROM

order_date

);

执行上面查询语句,得到以下结果 –

oracle查看视图定义语句_Oracle视图

这个查询是相当复杂的。 一遍又一遍地输入是耗时的,可能会导致错误。 为了简化它,可以创建一个基于这个查询的视图:

CREATE OR REPLACE VIEW customer_sales AS

SELECT

name AS customer,

SUM( quantity * unit_price ) sales_amount,

EXTRACT(

YEAR

FROM

order_date

) YEAR

FROM

orders

INNER JOIN order_items

USING(order_id)

INNER JOIN customers

USING(customer_id)

WHERE

status = ‘Shipped’

GROUP BY

name,

EXTRACT(

YEAR

FROM

order_date

);

通过添加以下子句:

CREATE OR REPLACE VIEW customer_sales AS

在查询之前,您将创建customer_sales视图。 请注意,您将在下一个教程中学习如何创建视图。

现在,可以通过更简单的查询2017年获取客户的销售情况:

SELECT

customer,

sales_amount

FROM

customer_sales

WHERE

YEAR = 2017

ORDER BY

sales_amount DESC;

执行上面查询语句,得到以下结果 –

oracle查看视图定义语句_Oracle视图

2. 保持逻辑数据独立性

可以通过视图将基础表中的数据公开到外部应用程序。每当基表的结构发生变化时,只需要更新视图。数据库和外部应用程序之间的接口保持不变。这样的好处在于,您不必更改一行代码即可保持外部应用程序的正常运行。

例如,某些报告系统可能只需要客户销售数据来撰写战略报告。 因此,您可以为应用程序所有者提供customer_sales视图。

3. 实施数据安全

视图可用来实现一个额外的安全层。 它们可以帮助您隐藏底层表中的某些列和行,并仅向适当的用户显示所需的数据。

Oracle在视图上为您提供GRANT和REVOKE命令,以便您可以指定用户可以针对该视图执行哪些操作。 请注意,在这种情况下,不会授予对基础表的任何权限,因为可能不希望用户绕过视图来直接访问基表。

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个最多限加 3 个群。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201652.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:55
下一篇 2026年3月20日 上午8:56


相关推荐

  • Wireshark网络流量分析工具

    Wireshark网络流量分析工具Wireshark网络流量分析工具安装使用yum安装wireshark遇到的问题http://blog.chinaunix.net/uid-11828817-id-2816828.htmlrpm-qawireshark#yuminstall-ywiresharkwireshark-gnome…

    2022年5月24日
    43
  • 即梦图片4.0上线4K直出,这就是AI人像的新巅峰

    即梦图片4.0上线4K直出,这就是AI人像的新巅峰

    2026年3月12日
    2
  • ZBar 源码分析 beta

    ZBar 源码分析 beta前言身在物流行业 扫描条码的场景很多 为了改造 ZBar 使其返回条码方向 条码与水平线的夹角 阅读了 ZBar 的源码 总结一下 没有弄清楚所有细节 只说说我弄清楚的部分 主流程应该大家都知道 ZBar 是 Z 字型扫描的 为什么要 Z 字型扫描 不清楚 一次扫描一行或者一列 在扫描过程中做滤波 EWMA 指数加权移动平均 可以消除部分噪声影响 然后计算梯度变化 确定边缘 计算当前

    2025年11月28日
    6
  • SQL 笛卡尔积现象

    SQL 笛卡尔积现象笛卡尔积的出现是在多表进行联合查询的时候会出现的一种情况。比如有两张表:表一:表二:在进行查询的时候:selectstudentname,SubjectnamefromStudent,subject会出现下面的情形,也就是笛卡尔现象,表一有5条记录,表二有3条记录,那么对于第一张表而言有5种选择,而对于第二张表来说有3种选择。所以结果就是5*3种选…

    2022年7月27日
    10
  • No pyvenv.cfg file问题解决方案

    No pyvenv.cfg file问题解决方案nopyvenv cfgfile 问题解决方案百度了一下发现百度也不是万能的解决方法 file 里面的 setting 点击小齿轮再点击 Add 在里面添加路径就可以了路径就是在之前的文件位置附近找总会找到的我就是无脑随便点点找到了找文件错误的话会提醒你但是如果你完成上述步骤的话 你会发现你下载的第三方库都没了 有个好办法就是用 Andconda 的解释器 如何使用呢 就是修改 baseInterpre 就行了之后就可以运行了总体来看 这篇博客写的挺烂的 有问题可以告诉

    2026年3月19日
    2
  • jQuery简洁大方的登录页面模板

    jQuery+CSS网站登录模板本模板带验证码在线体验:http://hovertree.com/texiao/jquery/13.htmDemo2:http://hovertree.com/hvt

    2021年12月21日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号