首頁 資料庫 mysql教程 SQL中的CTE是什麼

SQL中的CTE是什麼

Jan 21, 2019 pm 01:18 PM
sql

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 )
登入後複製

說明:我們可以透過在SELECT,INSERT,UPDATE,DELETE或MERGE語句之前直接加入WITH子句來定義CTE。 WITH子句中可以包含一個或多個逗號分隔的CTE。

運行CTE的宣告是:

SELECT <column_list>
FROM expression_name;
登入後複製

CTE的型別

CTE有兩種:遞迴和非遞歸。

遞迴CTE:是引用自身的常用表格運算式。

非遞迴CTE,顧名思義,不使用遞迴;他們不參考自己。

使用CTE的好處

○  可讀性:CTE提高了可讀性。而不是將所有查詢邏輯都集中到一個大型查詢中,而是創建幾個CTE,它們將在語句的後面組合。這使您可以獲得所需的資料塊,並將它們組合在最終的SELECT中。

○  替代檢視:您可以用CTE取代檢視。如果您沒有建立視圖對象的權限,或者您不想建立一個視圖對象,因為它僅在此一個查詢中使用,這很方便。

○  遞迴:使用CTE會建立遞迴查詢,也就是可以呼叫自身的查詢。當您需要處理組織結構圖等分層資料時,這很方便。

○  限制:克服SELECT語句限制,例如引用自身(遞歸)或使用非確定性函數執行GROUP BY。

○  排名:每當你想使用排名函數,例如ROW_NUMBER(),RANK(),NTILE()等。

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是SQL中的CTE是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的差異是什麼? Hibernate 框架中 HQL 和 SQL 的差異是什麼? Apr 17, 2024 pm 02:57 PM

Hibernate 框架中 HQL 和 SQL 的差異是什麼?

Oracle SQL中除法運算的用法 Oracle SQL中除法運算的用法 Mar 10, 2024 pm 03:06 PM

Oracle SQL中除法運算的用法

SQL中的identity屬性是什麼意思? SQL中的identity屬性是什麼意思? Feb 19, 2024 am 11:24 AM

SQL中的identity屬性是什麼意思?

Oracle與DB2的SQL語法比較與區別 Oracle與DB2的SQL語法比較與區別 Mar 11, 2024 pm 12:09 PM

Oracle與DB2的SQL語法比較與區別

java怎麼透過MySQL驅動攔截器實現執行sql耗時計算 java怎麼透過MySQL驅動攔截器實現執行sql耗時計算 May 27, 2023 pm 01:10 PM

java怎麼透過MySQL驅動攔截器實現執行sql耗時計算

詳解MyBatis動態SQL標籤中的Set標籤功能 詳解MyBatis動態SQL標籤中的Set標籤功能 Feb 26, 2024 pm 07:48 PM

詳解MyBatis動態SQL標籤中的Set標籤功能

SpringBoot如何加密設定檔的SQL帳號密碼 SpringBoot如何加密設定檔的SQL帳號密碼 May 22, 2023 pm 08:50 PM

SpringBoot如何加密設定檔的SQL帳號密碼

SQL出現5120錯誤怎麼解決 SQL出現5120錯誤怎麼解決 Mar 06, 2024 pm 04:33 PM

SQL出現5120錯誤怎麼解決

See all articles