[SQL] JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN


出典
エンコーディングトレーニング JOINは、データベース内の複数のテーブルからのレコードを組み合わせて、1つのテーブルまたは結果セットとして表す.
  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • 1. INNER JOIN


  • INNERJOINはON節とともに使用されます.
  • ON節の条件を満たすレコードのみを持ってきます.
  • INNER JOINでINNERは省略可能です.
  • SELECT [FIELD, ...] FROM TABLE1
    INNER JOIN TABLE2
    ON 조건식


    INNER JOINクエリー
  • Reservationテーブルの名前フィールドと顧客テーブルの名前フィールドが一致するレコードを使用
    SELECT * FROM Reservation
    INNER JOIN Customer
    ON Reservation.Name = Customer.Name;
    
    -- 별칭 사용
    SELECT * FROM Reservation AS R
    INNER JOIN Customer AS C
    ON R.Name = C.Name;

    2. LEFT JOIN


  • の1枚目の表を基準に、2枚目の表を組み合わせます.
  • ON条件式を満たさない場合は、最初のテーブルのフィールド値を直接取得します.
  • の場合、このレコードの2番目のテーブルフィールドの値はNULLとして表示されます.
  • SELECT [FIELD, ...] FROM TABLE1
    LEFT JOIN TABLE2
    ON 조건식
    
    例.
  • ReservationテーブルのNameフィールドに従って、LEFTJOINのみを使用して、顧客テーブルのNameフィールドに一致するレコード
  • を検索します.
  • 、ReserveDateフィールドの値は2016年02月01日以降のレコードのみ
    SELECT * FROM Reservation AS R
    LEFT JOIN Customer AS C
    ON R.Name = C.Name
    WHERE R.ReserveDate > '2016-02-01';
  • Nameが一致すると、INNERJOINのように2つのテーブルのすべてのフィールドが直接インポートされます.
  • 名前が一致しない場合、CustomerテーブルのすべてのフィールドがNULLとして表示されます.
  • 3. RIGHT JOIN


  • LEFTJOINとは逆に、2番目のテーブルを基準に、1番目のテーブルを組み合わせます.
  • ONセクションの条件を満たさない場合は、2番目のテーブルのフィールド値が直接取得されます.
  • ですが、レコードの最初のテーブルのフィールド値はNULLとして表示されます.
  • SELECT [FIELD, ...] FROM TABLE1
    RIGHT JOIN TABLE2
    ON 조건식
    例.
  • クライアントテーブルのNameフィールドに従って、RIGHT JOINのみを使用してReservationテーブルのNameフィールドに一致するレコード
  • を検索します.
    SELECT * FROM Reservation AS R
    RIGHT JOIN Customer AS C
    ON R.Name = C.Name;
  • INNERJOIN、LEFT JOINとは異なり、まずCustomerテーブルフィールドが左側に表示されます.
  • Nameが一致すると、すべてのフィールドがインポートされます.
  • Nameが一致しない場合、ReservationテーブルのすべてのフィールドがNULLとして表示されます.