Sql-Standard
什麼是 SQL 子句?
這聽起來像是一個過於簡單的問題,但我發現找到正確答案並不容易。
對於“什麼是 sql 子句?”這個問題。網際網路上的大多數資源只是提供了一個條款列表並解釋了它們的作用。
但我試圖用抽象的術語來理解它是如何定義的。就像一個通用表示法,它擷取可以編寫的各種查詢以及子句如何適合其中。
所有子句都有共同的屬性嗎?為什麼 UNION 稱為運算符,而 HAVING 是子句?
一般而言,子句只是 SQL 語句的邏輯塊 - 通常是(理論上)可選的塊。
我是一個 SQL Server 人,所以我會從這些方面考慮。
SELECT GETDATE()
是有效的 SQL ServerSELECT
語句。它將返回目前日期和時間。如果我添加一個
FROM
子句:SELECT GETDATE() FROM sys.objects
我將返回n行(其中n是
sys.objects
表中的行數),每行都將具有相同的(未命名的)列,顯示目前日期和時間。您可以添加一個
WHERE
子句來限制您帶回的行數;GROUP BY
刪除重複數據或允許您將匯總值放入列表中的子句SELECT
;HAVING 子句(通常用於根據聚合數據消除行);一個ORDER BY
對數據進行排序的子句 - 但是,這些都不是必須存在的。您會注意到,
SELECT
當提到返回的列列表時,我說的是“列表”。我從來沒有聽說過這被稱為條款——大概是因為它必須在那裡。另一方面,運算符用於組合或比較兩個完整的項目。就像
+
運算符可以讓您組合數字 (1 + 2
) 或字元串 ([firstname] + ' ' + [lastname]
)一樣UNION
,EXCEPT
、DIFFERENCE
、 和INTERSECT
運算符可以讓您組合兩個 SQL 語句。我可能過於簡單化了,但從這些方面思考至少應該讓你朝著正確的方向前進。