1. 程式人生 > >MYSQL學習筆記(十二)建立高階聯結

MYSQL學習筆記(十二)建立高階聯結

  1. 使用表別名
    SELECT ——,——
    FROM —— AS c,—— AS o,—— AS oi
    WHERE c.——=o.——
    AND oi.——=o.——
    AND ——=——;
    此處給表別名,三個例名,c、o、oi,可隨意替換其他字元。可縮短SQL語句
    表別名可用於WHERE子句,SELECT列表,ORDER BY子句等
    與列別名不同,表別名只存在於查詢執行中
  2. 使用不同型別的聯結
    (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指第二個空代表的表
    外部聯結將包括指出的表中的所有行
  3. 使用帶聚集函式的聯結
    SELECT ——.——
    ——,——
    COUNT(——.——) AS ——
    FROM —— INNER JOIN ——
    ON ——.——=——.——
    GROUP BY ——.——;
    只顯示有關聯行的相關計數
    若使用左外部聯結LEFT OUTET JOIN,將包含左表中所有行,甚至計數為0的行