본문 바로가기

sqld

2-7) 조인

JOIN (조인)
  • 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조할 경우 사용
  • FROM 절에 조인할 테이블 나열
  • ORACLE 표준은 테이블 나열 순서 중요하지 X, ANSI 표준은 OUTER JOIN 시 순서 중요
  • WHERE 절에서 조인 조건을 작성 (ORACLE 표준)
  • 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 ALIAS 붙임
  • N개의 테이블 조인하려면 최소 N-1 개의 조인 조건이 필요
    • 적다면 카타시안 곱 발생 가능
  • ORACLE 표준과 ANSI 표준이 서로 다름

 

 

조인 종류
  1. 조건의 형태에 따라
    • EQUI JOIN (등가 JOIN) : JOIN 조건이 동등 조건 (=)인 경우
    • NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우
  2. 조인 결과에 따라
    • INNER JOIN : JOIN 조건에 성립하는 데이터만 출력하는 경우
    • OUTER JOIN : JOIN 조건에 성립하지 않는 데이터도 출력하는 경우
      • LEFT / RIGHT / FULL OUTER JOIN으로 나뉨
    • NATURAL JOIN : 조인조건 생략 시 두 테이블에 같은 이름의 컬럼으로 자연 연결되는 조인
    • CROSS JOIN : 조인조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인 (카타시안 곱)
    • SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 조인

 

EQUI JOIN (등가 JOIN)
  • 조인 조건이 '=' (equal) 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻는 조인 방법
  • SQL 명령문에서 가장 많이 사용하는 조인 방법
  • FROM 절에 조인하고자 하는 테이블을 모두 명시
  • FROM 절에 명시하는 테이블은 테이블 ALIAS 사용 가능
  • WHERE 절에 두 테이블의 공통 컬럼에 대한 조인 조건을 나열

 

 

** 문법 (ORACLE 표준)

 

 

예1) EMP 테이블과 DEPT 테이블을 사용하여 각 직원의 이름과 부서명을 함께 출력

 

예2) EMP 테이블의 급여를 확인하고 SAL_GRADE에 있는 급여 등급 기준에 따라 직원이름과 급여, 급여 등급 출력

 

 

세 테이블 이상의 조인
  • 관계를 잘 파악하여 모든 테이블이 연결되도록 조인 조건 명시
  • N개 테이블의 경우 최소 N-1개의 조인 조건 필요

 

예) EMPLOYEES, DEPARTMENTS, LOCATIONS 테이블 조인

  • WHERE 절에 AND로 연결하여 조인 조건 명시
  • 필수 조인 조건이 하나라도 생략될 경우 카타시안 곱 발생

 

SELF JOIN
  • 한 테이블 내 각 행끼리 관계를 갖는 경우 조인 기법
  • 한 테이블을 참조할 때마다 (필요할 때마다) 명시해야 함
  • 테이블명이 중복되므로 반드시 테이블 ALIAS 사용

 

예) EMPLOYEES 테이블에서 각 직원 이름과 매니저 이름을 함께 출력

 

응용 예제) EMP 테이블에서 상위관리자 (매니저)보다 급여가 많은 직원 출력

  • 테이블 한 번 스캔 시 매니저 정보는 없으므로 셀프 조인 필요
  • 조인 조건과 일반 조건을 각자의 위치에 전달
    • ORACLE은 모두 WHERE 절 기술
    • ANSI 표준은 ON 절에 조인 조건, WHERE 절에 일반 조건

 

 

 

 

'sqld' 카테고리의 다른 글

2-9) 서브쿼리  (0) 2024.08.21
2-8) 표준 조인  (0) 2024.08.21
2-6) ORDER BY 절  (0) 2024.08.21
2-5) GROUP BY 절과 HAVING 절  (0) 2024.08.21
2-4) WHERE 절  (0) 2024.08.21