1. EQUI JOIN (= 내부 조인, 등가 조인)
- 정의: 두 테이블의 조인 조건이 = 비교로 이루어진 조인. 가장 기본적인
- 형식: INNER JOIN … ON A.col = B.col
- 예시
SELECT e.empno, e.ename, d.dname
FROM emp e
JOIN dept d
ON e.deptno = d.deptno;
- 포인트: 시험에서는 “EQUI JOIN = INNER JOIN”을 묻는 경우 多.
2. NON-EQUI JOIN
- 정의: 조인 조건이 = 이외(>, <, BETWEEN 등)로 구성된 조인.
- 예시 (급여 등급 매칭)
SELECT e.ename, e.sal, s.grade
FROM emp e
JOIN salgrade s
ON e.sal BETWEEN s.losal AND s.hisal;
- 포인트: 급여 등급, 성적 등 범위 매칭 문제로 출제.
3. SELF JOIN
- 정의: 하나의 테이블을 자기 자신과 조인.
- 예시 (사원의 상사 찾기)
SELECT e.ename AS 사원, m.ename AS 상사
FROM emp e
JOIN emp m
ON e.mgr = m.empno;
4. OUTER JOIN (LEFT / RIGHT / FULL)
- 정의: 한쪽 테이블에만 있는 데이터도 NULL 포함해 보여줌.
- 예시
-- LEFT (OUTER) JOIN (부서 없는 직원도 표시)
SELECT e.empno, e.ename, d.dname
FROM emp e
LEFT JOIN dept d
ON e.deptno = d.deptno;
-- RIGHT (OUTER) JOIN (직원이 없는 부서도 표시)
SELECT e.empno, e.ename, d.dname
FROM emp e
RIGHT JOIN dept d
ON e.deptno = d.deptno;
-- FULL OUTER JOIN (양쪽 모두 표시)
SELECT e.empno, e.ename, d.dname
FROM emp e
FULL OUTER JOIN dept d
ON e.deptno = d.deptno;
- 포인트: Oracle은 FULL OUTER JOIN 지원, MySQL은 8.0부터 FULL JOIN 대신 UNION으로 대체 가능.
5. CROSS JOIN (카티션 곱)
- 정의: 조인 조건 없이 두 테이블의 모든 조합 생성.
- 예시
SELECT e.ename, d.dname
FROM emp e
CROSS JOIN dept d;
- 포인트: 행 개수 = emp × dept. 보통 의도적 사용보다 실수로 나옴 → 시험 단골.
6. NATURAL JOIN
- 정의: 두 테이블에 동일한 칼럼명이 이 있으면 자동으로 조인.
- 예시
SELECT empno, ename, dname
FROM emp
NATURAL JOIN dept;
- 포인트: SQL 표준 문법. 실무보다는 시험에 자주 등장. 칼럼명 같아야만 작동.
7. USING 절 JOIN
- 정의: ON 대신 USING(공통칼럼)을 명시. 동일 칼럼만 조인 조건에 사용.
- 예시
SELECT empno, ename, dname
FROM emp
JOIN dept USING (deptno);
- 포인트: USING을 쓰면 조인 칼럼은 한 번만 표시됨.
8. ANSI JOIN vs ORACLE 전용 JOIN
- ANSI: JOIN... ON, LEFT OUTER JOIN 등
- Oracle 전용: (+) 연산자 사용
-- Oracle OUTER JOIN 방식
SELECT e.empno, e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno(+);
- 포인트: 시험에서 ANSI JOIN과 Oracle JOIN 구문 비교 문제 자주 출제.