표준 조인(ANSI JOIN) 은 FROM 테이블 JOIN 테이블 ON 조건처럼 조인을 명시적으로 쓰는 SQL 표준 문법입니다. 조인 조건이 FROM에 모여 WHERE의 검색 조건과 분리됩니다. 시험은 조건 지정 방식 3가지의 제약과 ON vs WHERE의 결과 차이를 묻습니다. (조인 종류 자체는 조인 단원 참고.)
이 단원, 시험에서 어디에 나오나 (출제 비중)
- 제2과목 「SQL 기본 및 활용」 = 40문항 · 80점. 표준 조인은 오류 찾기·실행결과 예측 유형으로 출제됩니다.
- USING·NATURAL의 별칭 금지와 OUTER 조건 위치(ON vs WHERE) 가 오답을 가르는 포인트입니다. (단원별 문항수는 공개되지 않습니다 — 출처: KDATA 출제기준.)
출제 포인트 — 시험이 실제로 묻는 것
ON/USING/NATURAL JOIN세 방식의 차이와 제약- USING·NATURAL의 공통 컬럼에 테이블 별칭 금지
- OUTER JOIN에서 옵션 테이블 조건은 ON에 — WHERE에 두면 INNER처럼 (최다 함정)
JOIN= INNER JOIN (생략 규칙), 오라클(+)와 ANSI 혼용 금지
① 조건 지정 3가지 — 오른쪽으로 갈수록 자동·위험
그림 1. 조건을 지정하는 세 방식. 오른쪽으로 갈수록 자동·위험. (자작 도식)
FROM a JOIN b ON a.부서코드 = b.부서코드 -- ON: 직접 명시(가장 유연)
FROM a JOIN b USING (부서코드) -- USING: 같은 이름 컬럼 1개
FROM a NATURAL JOIN b -- NATURAL: 같은 이름 전부 자동
| 방식 | 조건 | 주의 |
|---|---|---|
ON | 직접 명시 | 컬럼명 달라도 됨 |
USING(컬럼) | 같은 이름 1개 | 결과에 1번만, 별칭 금지 |
NATURAL | 같은 이름 전부 | ON/USING 병용 불가 |
함정:
USING(부서코드)로 묶은 컬럼을SELECT a.부서코드처럼 테이블 별칭을 붙이면 오류입니다. 그냥부서코드로 씁니다. NATURAL JOIN의 공통 컬럼도 같습니다.
함정: NATURAL JOIN은 이름이 같은 컬럼을 전부 조인 조건에 넣습니다. 우연히 이름만 같은 컬럼(
등록일등)이 있으면 결과가 의도보다 줄어듭니다.
② OUTER·CROSS 문법 — 생략 규칙
FROM a JOIN b ON a.k = b.k; -- JOIN = INNER JOIN
FROM a LEFT OUTER JOIN b ON a.k = b.k; -- OUTER 키워드는 생략 가능
FROM a CROSS JOIN b; -- 조건 없음, M×N
JOIN만 쓰면 INNER입니다. OUTER를 원하면 LEFT/RIGHT/FULL을 반드시 명시합니다. 오라클 (+) 표기와 ANSI 문법은 한 문장에 섞어 쓸 수 없습니다.
③ ON vs WHERE — 아우터가 이너로 변하는 최다 함정
-- (의도) 모든 회원 + 2026년 주문 — 주문 없는 회원도 보고 싶다
-- (실수) 옵션 테이블 조건을 WHERE에 → 주문 없는 회원 탈락(INNER 효과)
FROM 회원 m LEFT JOIN 주문 o ON m.회원 = o.회원
WHERE o.주문일 >= '2026-01-01'; -- o.주문일이 NULL인 행이 걸러짐
-- (정답) 옵션 테이블 조건을 ON에
FROM 회원 m LEFT JOIN 주문 o
ON m.회원 = o.회원 AND o.주문일 >= '2026-01-01';
그림 2. 옵션 테이블 조건을 ON에 두면 아우터 유지, WHERE에 두면 INNER처럼 된다. (자작 도식)
원리: LEFT JOIN은 짝 없는 행의 오른쪽 컬럼을 NULL로 채우는데, 그 컬럼에 대한 조건이 WHERE에 있으면 NULL 비교 = UNKNOWN이라 그 행이 걸러집니다. 조건이 ON에 있으면 "조인 짝을 고르는 기준"일 뿐이라 왼쪽 행은 살아남습니다.
한 장 정리 (암기 카드)
ON(직접·유연) ·USING(같은 이름 1개·별칭 금지) ·NATURAL(같은 이름 전부·병용 불가).- 옵션 테이블 조건은 ON에 — WHERE에 두면 아우터가 이너 된다.
JOIN= INNER. OUTER는 방향 키워드 필수.(+)와 ANSI 혼용 금지.
참고 출처
- 시험 과목·배점: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- ANSI JOIN 문법·동작은 SQL 표준·오라클 SQL에 근거하며, 본문 예시·도식·설명은 자작입니다.