Rumah > pangkalan data > tutorial mysql > SQL中的CTE是什么

SQL中的CTE是什么

青灯夜游
Lepaskan: 2019-01-21 13:18:47
asal
14329 orang telah melayarinya

CTE表示公用表表达式,是一个临时命名结果集,始终返回结果集。它是为了简化SQL查询,而被标准SQL引入的。下面本篇文章就来带大家认识一下CTE(公用表表达式),希望对大家有所帮助。

SQL中的CTE是什么

CTE是什么?

公用表表达式(CTE)可以被认为是在单个SELECT,INSERT,UPDATE,DELETE或CREATE VIEW语句的执行范围内定义的临时结果集。CTE类似于派生表,因为它不作为对象存储,并且仅在查询期间持续。与派生表不同,CTE可以是自引用的,并且可以在同一查询中多次引用。【相关视频教程推荐:MySQL教程

CTE的结构

CTE由表示CTE的表达式名称,AS关键字和SELECT语句组成。定义CTE后,可以在SELECT,INSERT,UPDATE或DELETE语句中像表或视图一样引用它。CTE也可以在CREATE VIEW语句中用作其定义SELECT语句的一部分。

CTE的基本语法结构是:

WITH Expression_Name [ ( ColumnName [1,...n] ) ]
AS
( CTE query definition )
Salin selepas log masuk

说明:我们可以通过在SELECT,INSERT,UPDATE,DELETE或MERGE语句之前直接添加WITH子句来定义CTE。WITH子句中可以包含一个或多个逗号分隔的CTE。

运行CTE的声明是:

SELECT <column_list>
FROM expression_name;
Salin selepas log masuk

CTE的类型

CTE有两种类型:递归和非递归。

递归CTE:是引用自身的常用表表达式。

非递归CTE,顾名思义,不使用递归;他们不参考自己。

使用CTE的好处

○  可读性:CTE提高了可读性。而不是将所有查询逻辑都集中到一个大型查询中,而是创建几个CTE,它们将在语句的后面组合。这使您可以获得所需的数据块,并将它们组合在最终的SELECT中。

○  替代视图:您可以用CTE替换视图。如果您没有创建视图对象的权限,或者您不想创建一个视图对象,因为它仅在此一个查询中使用,这很方便。

○  递归:使用CTE会创建递归查询,即可以调用自身的查询。当您需要处理组织结构图等分层数据时,这很方便。

○  限制:克服SELECT语句限制,例如引用自身(递归)或使用非确定性函数执行GROUP BY。

○  排名:每当你想使用排名函数,如ROW_NUMBER(),RANK(),NTILE()等。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

Atas ialah kandungan terperinci SQL中的CTE是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sql
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan