본문 바로가기

[DB]DataBase/[SQL]

[SQLD] 표준 조인

728x90
반응형

표준 조인

ANSI/ISO SQL에서 표준으로 작성되는 INNER JOIN, NATURAL JOIN,  CROSS JOIN, OUTER JOIN(LEFT, RIGHT, FULL)을 의미

(SQL에서 표시하는 FROM 절의 JOIN 형태)

 

INNER JOIN

  • 내부 조인이라고 하며, 조인 조건이 일치하는 행만 출력 (ORACLE 조인 기본)
  • ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN을 명시함
    • USING 또는 ON 조건절을 필수적으로 사용

ON절

  • 조인할 컬럼의 컬럼명이 서로 다르더라도 사용 가능
  • 조인 컬럼을 명시하기 위해 사용
  • ON 조건의 괄호는 생략 가능 (optional)
  • 컬럼명이 같을 경우 테이블 이름이나 별칭을 사용하여 명확하게 지정 (테이블 출처 명시)
  • ON 조건절에서 조인 조건을 명시하고, WHERE 절에서는 일반 조건 명시해야 함

ON절 문장 ( ANSI/ISO SQL 표준 EQUI JOIN 문장)

USING 조건절

  • 조인할 컬럼명이 같은 경우 사용
    • FROM 절에 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN 조인 가능
  • Alias나 테이블 이름과 같은 접두사 사용 불가
  • 괄호 필수

USING 조건절 문장

NATURAL JOIN

  • 두 테이블 간 동일한 이름을 가지는 모든 컬럼에 대해 EQUI JOIN을 수행
    • NATURAL JOIN은 동일한 이름의 모든 컬럼을 조인 컬럼으로 사용하므로 조인 컬럼의 값이 모두 같을 때만 결과가 리턴됨
  • NATURAL JOIN이 명시되면 USING, ON, WHERE 절에서 조인 조건 정의 불가
  • JOIN에 사용된 컬럼들은 데이터 유형이 동일해야 하고, 접두사 사용 불가

NATURAL JOIN 문장

CROSS JOIN

  • 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
    • 카타시안 곱 (Cartesian product) 출력
  • 결과는 양쪽 집합(테이블 행 수)의 M * N 건의 데이터 조합이 발생

CROSS JOIN 문장

OUTER JOIN

  • INNER JOIN과 대비되는 조인 방식
  • JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
  • 두 테이블 중 한 쪽에 NULL을 가지면 EQUI JOIN 시 출력되지 않지만, 이 경우를 출력할 땐 OUTER JOIN을 사용
  • 테이블 기준 방향에 따라 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분

OUTER JOIN 종류

LEFT OUTER JOIN

  • FROM 절에 나열된 왼쪽 테이블에 해당하는 데이터를 읽은 후 오른쪽 테이블에서 JOIN 대상을 읽어오는 방식
  • 왼쪽 테이블이 기준이 되고, 오른쪽 테이블의 데이터를 채우는 방식
  • 오른쪽 테이블 데이터에서 같은 값이 없는 경우, NULL로 출력

RIGHT OUTER JOIN

  • LEFT OUTER JOIN의 반대
  • 오른쪽 테이블이 기준이 되고, 왼쪽 테이블의 데이터를 채우는 방식
  • FROM 절에 테이블 순서를 변경하면 LEFT OUTER JOIN으로 수행

FULL OUTER JOIN

  • 두 테이블 전체 기준으로 결과를 생성하여 중복 데이터는 삭제 후 출력
  • LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN 결과의 UNION 연산(합집합) 결과와 동일
  • ORACLE 표준에는 없음

JOIN 문장

반응형

'[DB]DataBase > [SQL]' 카테고리의 다른 글

[SQLD] 집합 연산자  (0) 2024.05.06
[SQLD] 서브 쿼리  (0) 2024.05.05
[SQLD] 순수 관계 연산자  (0) 2024.05.03
[SQLD] JOIN 조인  (0) 2024.05.02
[SQLD] ORDER BY절  (1) 2024.04.27