Join

정미·2022년 7월 13일
0

Computer Science

목록 보기
33/81

정의

테이블간의 관계성에 따라 여러 개의 테이블을 결합하고, 하나의 테이블인 것처럼 결과를 출력한다

종류

1. INNER JOIN

  • 조인하는 두 개 테이블 모두에 데이터가 공통적으로 존재하는 행에 대해서만 결과를 가져온다
  • 교집합 연산
  • SQL
    -- ANSI-SQL
    SELECT 컬럼명, ...
    FROM TABLE_A
    [INNER] JOIN TABLE_B
    ON TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
    -- ORACLE SQL
    SELECT 컬럼명, ...
    FROM TABLE_A, TABLE_B
    WHERE TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
  • 예시
    • inner join 전
    • inner join 후

2. OUTER JOIN

  • 매칭되는 행이 없어도 결과를 가져오고 매칭되는 행이 없으면 NULL로 표시
  • LEFT JOIN, RIGHT JOIN

2-1. LEFT (OUTER) JOIN

  • 가장 많이 사용되는 조인 형태
  • 교집합 연산 + 차집합 연산 ( (A ∩ B) ∪ (A - B) )
  • SQL
    -- ANSI-SQL
    SELECT 컬럼명, ...
    FROM TABLE_A
    LEFT OUTER JOIN TABLE_B
    ON TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
    -- ORACLE SQL
    SELECT 컬럼명, ...
    FROM TABLE_A, TABLE_B
    WHERE TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼(+)
    ;
    • 오른쪽 테이블(TABLE_B)의 조인 키 컬럼명 뒤에 (+) 입력
  • 예시
    • left outer join 전
    • left outer join 후

2-2. RIGHT (OUTER) JOIN

  • 교집합 연산 + 차집합 연산 ( (A ∩ B) ∪ (A - B) )
  • LEFT OUTER JOIN의 반대
  • SQL
    -- ANSI-SQL
    SELECT 컬럼명, ...
    FROM TABLE_A
    RIGHT OUTER JOIN TABLE_B
    ON TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
    -- ORACLE SQL
    SELECT 컬럼명, ...
    FROM TABLE_A, TABLE_B
    WHERE TABLE_A.조인키컬럼(+) = TABLE_B.조인키컬럼
    ;
    • 왼쪽 테이블(TABLE_A)의 조인 키 컬럼명 뒤에 (+) 입력
  • 예시
    • right outer join 전
    • right outer join 후

2-3. FULL OUTER JOIN

  • 합집합 연산 (A ∩ B)
  • SQL
    -- ANSI-SQL
    SELECT 컬럼명, ...
    FROM TABLE_A
    FULL OUTER JOIN TABLE_B
    ON TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
    -- ORACLE SQL
    SELECT 컬럼명, ...
    FROM TABLE_A
    FULL OUTER JOIN TABLE_B
    WHERE TABLE_A.조인키컬럼 = TABLE_B.조인키컬럼
    ;
  • 예시
    • full outer join 전
    • full outer join 후

출처

0개의 댓글