Oracle中View和With…as子句之间有什么区别?

问题描述 投票:1回答:1

我的示例受Oracle网站启发CREATE VIEW

-- ex1
with SAMP_V1 as (
    AS SELECT COMM + BONUS as COL_SUM, COMM - BONUS as COL_DIFF
    FROM SAMP.EMPLOYEE) 
select * from SAMP_V1;

-- ex2
CREATE VIEW SAMP.V1 (COL_SUM, COL_DIFF)
    AS SELECT COMM + BONUS, COMM - BONUS
    FROM SAMP.EMPLOYEE;

select * from SAMP.V1;

我注意到的唯一区别是ex1是用一个语句编写的,而ex2是分成两个语句的。另外,我可以使用WITH选择整个集合的子集,但是我也可以使用VIEW来做到这一点。

可以是:

  • 仅选择一次,然后选择
  • VIEW是别名,因此每次被提及时都会重复执行SELECT

谢谢

sql oracle view with-clause
1个回答
1
投票

viewwith子句肯定不是同一件事。

with子句生成仅在执行它的查询中存在的内联表(又称派生表)。

另一方面,view是合法的数据库对象,从某种意义上讲,它模拟表。视图由sql查询定义,因此它是一个虚拟表,可以像查询其他任何数据库表一样对其进行查询。在某些情况下,您甚至可以运行应用于基础表的DML操作或视图(更新,删除,插入)。

如果反复需要相同的with子句,则视图有助于缩短查询。

© www.soinside.com 2019 - 2024. All rights reserved.