公用表表达式oracle,sql - 何时使用公用表表达式(CTE)

今天我们将了解Common表表达式,它是SQL Server 2005中引入的新功能,也可以在更高版本中使用。

公用表表达式: - 公用表表达式可以定义为临时结果集,换句话说,它可以替代SQL Server中的视图。 公用表表达式仅在定义它的批处理语句中有效,不能在其他会话中使用。

声明CTE的语法(公用表表达式): -

with [Name of CTE]

as

(

Body of common table expression

)

让我们举一个例子: -

CREATE TABLE Employee([EID] [int] IDENTITY(10,5) NOT NULL,[Name] [varchar](50) NULL)

insert into Employee(Name) values('Neeraj')

insert into Employee(Name) values('dheeraj')

insert into Employee(Name) values('shayam')

insert into Employee(Name) values('vikas')

insert into Employee(Name) values('raj')

CREATE TABLE DEPT(EID INT,DEPTNAME VARCHAR(100))

insert into dept values(10,'IT')

insert into dept values(15,'Finance')

insert into dept values(20,'Admin')

insert into dept values(25,'HR')

insert into dept values(10,'Payroll')

我创建了两个表employee和Dept,并在每个表中插入了5行。 现在我想加入这些表并创建一个临时结果集以进一步使用它。

With CTE_Example(EID,Name,DeptName)

as

(

select Employee.EID,Name,DeptName from Employee

inner join DEPT on Employee.EID =DEPT.EID

)

select * from CTE_Example

让我们逐一采用声明的每一行并理解。

要定义CTE,我们编写“with”子句,然后我们给表表达式命名,这里我给出了名称为“CTE_Example”的名称

然后我们写“As”并将我们的代码括在两个括号(---)中,我们可以在封闭的括号中连接多个表。

在最后一行中,我使用了“Select * from CTE_Example”,我们在最后一行代码中引用Common表达式,所以我们可以说它就像一个视图,我们在一个视图中定义和使用视图 batch和CTE不作为永久对象存储在数据库中。 但它的行为就像一个观点。 我们可以在CTE上执行删除和更新语句,这将对CTE中使用的引用表产生直接影响。 让我们举个例子来理解这个事实。

With CTE_Example(EID,DeptName)

as

(

select EID,DeptName from DEPT

)

delete from CTE_Example where EID=10 and DeptName ='Payroll'

在上面的语句中,我们从CTE_Example中删除一行,它将从CTE中使用的引用表“DEPT”中删除数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值