• 조인(Join)343ㄱㄱ

  • 0ㅅㄷ334⁴554ㅅ

    • 두 개 이상의 테이블에서 연관된 레코드를 조합, 하나의 열(ROW)로 표현하는 것이다.

    • WHY?

      • 외래키를 활용하여 정규화로 인해 분리된 테이블에서 데이터를 그대로 가져와 하나ㅋ5ㅅ의 결과(ROW)로 반환해준다.
      • ㄱㅌ434
      • 하나의 ROW에 모든 데이터를 담는 것은 무결성과 정합ㄹ성 유지가 힘들기 때문에 정규화를 통해 테이블을 분리시키고 쿼리시에 데이터를 다시 하나의 결과로 만들어 주기 위해 JOIN을 사용하는 것이다.
    • 명시적 JOIN

      • 쿼리문에 JOIN 키워드를 사용해 어떤 관계로 JOIN할 것인지 명시하는 방법이다.
    • 묵시적 JOIN

      • 쿼리문에 JOIN 키워드 없이 ,를 이용하여 관계가 맺어진 테이블을 나열함으로써 묵시적으로 JOIN을 이용하는 방법이다.

      ps ) 이 두 방법은 적어도 MySQL에서 성능 차이가 없으며 단지, 명확성의 차이가 있다. 묵시적 JOIN 보다는 명확한 표현으로 혼동 가능성이 없는 명시적 JOIN을 사용하는 것이 바람직하다.

  • JOIN의 종류

    • INNER JOIN

      • 흔히 JOIN이라고 하면 INNER JOIN을 가리키며 가장 많이 사용하게 되는 JOIN이다.
      • 두 테이블을 JOIN할 때 모두 같은 데이터를 가지고 있어야 한다.

      Untitled

      • SQL 문
        • SELECT * FROM A INNER JOIN B ON A.comment_id = B.id
    • OUTER JOIN

      • INNER JOIN은 서로 연관된 데이터 만을 조회하게 된다면 OUTER JOIN은 LEFT, RIGHT, FULL 조건에 따라 연관되지 않은 데이터 또한 조회하게 된다.

      Untitled

      • LEFT OUTER JOIN
        • SQL문
          • SELECT * FROM A LEFT OUTER JOIN B ON A.comment_id = B.id
          • A의 모든 데이터가 조회되며 이 중 B와 연관된 데이터는 B의 데이터도 함께 조회된다.
      • RIGHT OUTER JOIN
        • SQL 문
          • SELECT * FROM A RIGHT OUTER JOIN B ON A.comment_id = B.id
          • B의 모든 데이터가 조회되며 이 중 A와 연관된 데이터는 A의 데이터도 함꼐 조회된다.
      • FULL OUTER JOIN
        • SQL 문
          • SELECT * FROM A FULL OUTER JOIN B ON A.comment_id = B.id
          • A, B 모든 데이터가 조회되며 이중 연관된 데이터는 함께 조회된다.
  • CROSS JOIN

    • 각각의 데이터끼리 모두 JOIN하는 형태이다.

      Untitled

    • SQL 문

      • SELECT * FROM A CROSS JOIN B
      • 각 A의 데이터는 모든 B의 데이터와 매치된다.