알고리즘/SQL 문법 정리

SQL 문법 정리 5 :조인(Join) 정리

경우42 2025. 2. 3. 15:30
반응형

SQL 조인(Join) 정리

1. 조인(Join) 개요

  • 목적: 하나 이상의 테이블을 연결하여 데이터를 조회
  • 핵심 키: 기본 키(PK)와 외래 키(FK)를 사용해 테이블 연결
  • 주요 조인 유형:
    • Inner Join
    • Outer Join
    • Cross Join
    • Self Join
    • Non-Equijoin

2. Inner Join (내부 조인)

기본 개념

  • 두 테이블의 공통된 데이터만 반환
  • INNER JOIN 키워드 또는 WHERE 절로 구현

문법

-- ANSI 표준
SELECT 컬럼목록
FROM 테이블1
INNER JOIN 테이블2 ON 조인조건
[WHERE 추가조건];

-- 암시적 조인 (WHERE 사용)
SELECT 컬럼목록
FROM 테이블1, 테이블2
WHERE 조인조건 [AND 추가조건];

예시

-- 부서(DEPT)와 사원(EMP) 테이블 조인
SELECT *
FROM DEPT
INNER JOIN EMP ON DEPT.DEPTNO = EMP.DEPTNO;

-- WHERE 절 사용
SELECT *
FROM DEPT, EMP
WHERE DEPT.DEPTNO = EMP.DEPTNO;

주의사항

  • 중복 컬럼명은 테이블명.컬럼명으로 명시
  • 다중 조건 적용 시 AND 사용
SELECT D.DNAME, E.ENAME
FROM DEPT D
INNER JOIN EMP E ON D.DEPTNO = E.DEPTNO
WHERE E.SAL > 1000;

3. Outer Join (외부 조인)

기본 개념

  • 한쪽 테이블의 모든 데이터를 포함시켜 조회
  • LEFT/RIGHT Outer Join 지원

문법

SELECT 컬럼목록
FROM 테이블1
[LEFT|RIGHT] OUTER JOIN 테이블2 ON 조인조건;

예시

-- LEFT OUTER JOIN (모든 부서 정보 표시)
SELECT E.ENAME, D.DNAME
FROM DEPT D
LEFT OUTER JOIN EMP E ON D.DEPTNO = E.DEPTNO;

-- RIGHT OUTER JOIN (모든 사원 정보 표시)
SELECT E.ENAME, D.DNAME
FROM EMP E
RIGHT OUTER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;

4. Cross Join (상호 조인)

기본 개념

  • 카티션 곱(Cartesian Product) 생성
  • 모든 행의 조합 반환 (주의: 데이터 폭증)

문법

-- ANSI 표준
SELECT *
FROM 테이블1
CROSS JOIN 테이블2;

-- 암시적 표현
SELECT *
FROM 테이블1, 테이블2;

예시

SELECT *
FROM DEPT CROSS JOIN EMP;

5. Self Join (자체 조인)

기본 개념

  • 동일 테이블을 서로 다른 별칭으로 조인
  • 계층 구조나 동일 테이블 내 관계 분석 시 사용

예시

-- 같은 부서의 사원 찾기
SELECT A.ENAME, B.ENAME AS 동료
FROM EMP A
INNER JOIN EMP B ON A.DEPTNO = B.DEPTNO
WHERE A.EMPNO <> B.EMPNO;

6. Non-Equijoin (비등가 조인)

기본 개념

  • = 대신 범위 연산자(BETWEEN, >, < 등) 사용
  • 등급 분류, 범위 기반 매칭에 활용

예시

-- 급여 등급 조회 (SALGRADE 테이블 활용)
SELECT E.ENAME, E.SAL, S.GRADE
FROM EMP E
INNER JOIN SALGRADE S ON E.SAL BETWEEN S.LOSAL AND S.HISAL;

7. 조인 유형 비교 표

조인 유형설명키워드/연산자

Inner Join 공통 데이터만 반환 INNER JOIN, WHERE
Left Join 왼쪽 테이블 전체 + 매칭 데이터 LEFT OUTER JOIN
Right Join 오른쪽 테이블 전체 + 매칭 데이터 RIGHT OUTER JOIN
Cross Join 모든 조합 생성 CROSS JOIN, ,
Self Join 동일 테이블 조인 별칭 사용
Non-Equijoin 비등가 조건으로 조인 BETWEEN, >, <

8. 실전 팁

  • 별칭(Alias) 사용: 복잡한 쿼리 가독성 향상
  • 명시적 조인 구문: ANSI 표준 문법이 유지보수에 유리
  • 성능 고려: Cross Join은 의도하지 않은 데이터 폭증 주의
-- 별칭과 명시적 조인 사용 예시
SELECT D.DNAME AS "부서명", E.ENAME AS "사원명"
FROM DEPT D
INNER JOIN EMP E ON D.DEPTNO = E.DEPTNO
ORDER BY D.DNAME;
반응형