1 분 소요

조인이란?

  • 2개 이상의 테이블을 조인하여 원하는 결과를 출력
  • INNER JOIN, NATURAL JOIN, USING, ON
  • LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
  • CROSS JOIN


내부조인

INNER JOIN

  • 테이블 조인 시 조인 조건에 대해 동일한 값이 있는 행 리턴
  • 조인 조건을 기준으로 정확히 매칭되는 집합만을 결과집합으로 리턴
      WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명
    

NATURAL JOIN

  • 조인하는 2개의 테이블에서 동일한 이름의 칼럼명이 존재하는 경우 자동으로 동일한 칼럼을 기준으로 조인되어 INNER JOIN과 동일한 결과집합 출력
      FROM 테이블명 [앨리어스 명] NATURAL JOIN 테이블명 [앨리어스 명]
    
    • NATURAL JOIN 에서 조인 대상 칼럼에는 앨리어스 사용할 수 없다.
  • NATURAL JOININNER JOIN으로 변환
      WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명
    
    • NATURAL JOININNER JOIN으로 변환하면 조인 대상 칼럼에 앨리어스 사용 가능

USING

  • 조인 칼럼을 지정하고 싶은 경우 USING절을 이용하면 같은 이름을 가진 칼럼들 중 원하는 칼럼에 대해서만 선택적 조인 가능
  • 결과집합은 INNER JOIN과 결과 동일
  • USING 절에 기재하는 조인 칼럼에는 앨리어스 사용 불가
      FROM 테이블명 [앨리어스 명]
      JOIN 테이블명 [앨리어스 명]
      USING (원하는 칼럼명)
    

ON

  • 여러 개의 칼럼에 대한 조인 조건 기재 가능
  • 조인하는 칼럼의 이름이 서로 달라고 조인 수행
  • 동일한 칼럼명을 기재할 경우 반드시 앨리어스 사용
      FROM 테이블명 [앨리어스 명]
      INNER JOIN 테이블명 [앨리어스 명]
      ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
    



외부조인 (OUTER JOIN)

LEFT OUTER JOIN

  • 왼쪽에 기재한 테이블이 OUTER 집합이 되고 오른쪽에 기재한 테이블이 INNER 집합
  • 왼쪽 OUTER 는 다 나오지만 오른쪽 INNER 는 매칭되는 데이터만 보여줌
      FROM 테이블명 [앨리어스 명], 테이블명 [앨리어스 명]
      WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명(+)
    
      FROM 테이블명 [앨리어스 명] LEFT OUTER JOIN 테이블명 [앨리어스 명]
      ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
    

RIGHT OUTER JOIN

  • 오른에 기재한 테이블이 OUTER 집합이 되고 왼쪽에 기재한 테이블이 INNER 집합
  • 오른쪽 OUTER 는 다 나오지만 왼쪽 INNER 는 매칭되는 데이터만 보여줌
      FROM 테이블명 [앨리어스 명], 테이블명 [앨리어스 명]
      WHERE 테이블[의 앨리어스명].칼럼명(+) = 테이블[의 앨리어스명].칼럼명
    
      FROM 테이블명 [앨리어스 명] RIGHT OUTER JOIN 테이블명 [앨리어스 명]
      ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
    

    FULL OUTER JOIN

  • INNER JOIN으로 매칭되는 집합, LEFT OUTER JOIN의 집합, RIGHT OUTER JOIN의 집합 모두 출력
      FROM 테이블명 [앨리어스 명] FULL OUTER JOIN 테이블명 [앨리어스 명]
      ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
    



교차조인(CROSS JOIN)

  • 2개의 테이블을 FROM절에 기재 후 아무런 조인 조건도 기재하지 않을 때 발생하는 조인 (곱집합)
  • 두 테이블 데이터 수의 곱으로 연산된 데이터의 수가 출력
      FROM 테이블명 [앨리어스 명] CROSS JOIN 테이블명 [앨리어스 명]
    
  • 특정 테이블의 데이터를 복제할 때 많이 사용

댓글남기기