DML (Data Manipulation Language) 與 CTE (Common Table Expression)
今天看書時遇到的兩個縮寫,不知道其含義,於是就百度了一下,特地在此記錄下來,以便於下次復習使用。
關於DML (Data Manipulation Language):
數據操縱語言,用戶能夠查詢數據庫以及操作已有數據庫中的數據的計算機語言。具體是指是UPDATE更新、INSERT插入、DELETE刪除。
關於CTE (Common Table Expression):
CTE(Common Table Expression) ,即公用表表達式,可以認為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE ⅥEW 語句的執行范圍內定義的臨時結果集。CTE與派生表類似,具體表現在不存儲為對象,並且只在查詢期間有效。與派生表的不同之處在於,CTE 可自引用,還可在同一查詢中引用多次。
CTE可用於:
1.創建遞歸查詢(我個人認為CTE最好用的地方)。
2.在同一語句中多次引用生成的表。
CTE優點:
1.使用 CTE 可以獲得提高可讀性和輕松維護復雜查詢的優點。
2.查詢可以分為單獨塊、簡單塊、邏輯生成塊。之後,這些簡單塊可用於生成更復雜的臨時 CTE,直到生成最終結果集。
CTE可使用的范圍:
可以在用戶定義的例程(如函數、存儲過程、觸發器或視圖)中定義 CTE。
下面看一個簡單的CTE例題:
把test表中salary最大的id記錄保存在test_CTE中,再調用
代碼如下:
復制代碼 代碼如下:
with test_CTE(id,salary)
as
(
select id,max(salary)
from test
group by id
)
select * from test_cte