我的示例受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来完成。
可以吗?
谢谢
答案 0 :(得分:3)
view
和with
子句肯定不是同一回事。
with
子句生成仅在执行它的查询中存在的内联表(又名派生表)。
另一方面,view
是一个合法的数据库对象,从某种意义上讲,它模拟一个表。视图由sql查询定义,因此它是一个虚拟表,可以像查询其他任何数据库表一样对其进行查询。在某些情况下,您甚至可以运行应用于基础表的DML操作或视图(更新,删除,插入)。
如果反复需要相同的with
子句,则视图有助于缩短查询。