알고리즘/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;
반응형