SQL

[SQL] JOIN (1)

beginner-in-coding 2025. 2. 14. 18:47

01. JOIN (조인)

  • 여러 테이블의 데이터를 사용하여 동시 출력 / 참조할 경우 사용
  • FROM절에 조인할 테이블 나열
  • 테이블의 순서
    • ORACLE 표준: 테이블 나열 순서 중요 X
    • ANSI 표준: OUTER JOIN 시 순서 중요 O
  • ORACLE 표준: WHERE 절에서 조인 조건을 작성
  • 동일한 열 이름이 여러 개 존재할 경우 → 열 이름 옆에 테이블 이름 | 테이블 Alias를 붙임
  • N개의 테이블을 조인할 경우: 최소 N-1개의 조인 조건이 필요

02. 조인 종류

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

03. 조건의 형태에 따라 (1) - EQUI JOIN (등가 JOIN)

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

04. 조건의 형태에 따라 (2) - NON-EQUI JOIN

  • '='이 아닌 조건을 사용하는 경우
  • 문법
SELECT 테이블1.컬럼, 테이블2.컬럼
FROM 테이블1, 테이블2
WHERE 테이블1.컬럼 비교조건 테이블2.컬럼;  --NON-EQUI JOIN

05. 세 테이블 이상의 조인

  • 관계 파악하여 모든 테이블이 연결되도록 조인 조건 명시
  • N개 테이블의 경우 최소 N-1개의 조인 조건 필요
SELECT E1.컬럼, E2.컬럼, E3.컬럼
FROM 테이블1 E1, 테이블2 E2, 테이블3 E3
WHERE E1.컬럼 = E2.컬럼
AND E2.컬럼 = E3.컬럼;  --세 테이블 이상 조인

06. SELF JOIN

  • 한 테이블 내 각 행끼리 관계를 갖는 경우 사용
  • 한 테이블을 참조할 때마다 명시해야 함 (필요할때마다)
  • 태이블명이 중복되므로 반드시 테이블 별칭 사용
SELECT E1.컬럼1, E2.컬럼2
FROM 테이블1 E1, 테이블1 E2
WHERE E1.컬럼1 = E2.컬럼2;  --SELF JOIN

'SQL' 카테고리의 다른 글

[SQL] 서브쿼리  (0) 2025.02.17
[SQL] JOIN (2)  (0) 2025.02.17
[SQL] ORDER BY 절  (0) 2025.02.14
[SQL] GROUP BY 절, HAVING 절  (0) 2025.02.14
[SQL] WHERE 절  (0) 2025.02.13