MYSQL學習筆記(十二)建立高階聯結
阿新 • • 發佈:2019-02-10
- 使用表別名
SELECT ——,——
FROM —— AS c,—— AS o,—— AS oi
WHERE c.——=o.——
AND oi.——=o.——
AND ——=——;
此處給表別名,三個例名,c、o、oi,可隨意替換其他字元。可縮短SQL語句
表別名可用於WHERE子句,SELECT列表,ORDER BY子句等
與列別名不同,表別名只存在於查詢執行中 - 使用不同型別的聯結
(1) 自聯結
SELECT p1.——,p1——
FROM —— AS p1,—— AS p2
WHERE p1.——=p2.——
AND p2.——=——;
此查詢實際上需要的兩個表上是相同的表,為避免二義性,給一個表兩個不同列名
在SELECT語句中也要明確給出p1字首明確給出所需列全名
(2) 自然聯結
SELECT c.*,o.——,o.——,oi.——,oi.——,oi.——
FROM —— AS c,—— AS o,—— AS oi
WHERE c.——=o.——
AND oi.——=o.——
AND ——=——;
萬用字元對第一個表使用,所用其他列手動明確列出,將不會檢索出重複列
(3) 外部聯結
既檢索有關聯行的行,也包含沒有關聯行的行
SELECT ——.——,——.——
FROM —— LEFT OUTER JOIN ——
ON ——.——=——.——;
此SELECT語句使用OUTER JOIN指定聯結型別
LEFT指出FROM子句的第一個空代表的表。RIGHT指第二個空代表的表
外部聯結將包括指出的表中的所有行 - 使用帶聚集函式的聯結
SELECT ——.——
——,——
COUNT(——.——) AS ——
FROM —— INNER JOIN ——
ON ——.——=——.——
GROUP BY ——.——;
只顯示有關聯行的相關計數
若使用左外部聯結LEFT OUTET JOIN,將包含左表中所有行,甚至計數為0的行