공든탑앱 열기

조인의 기본(EQUI·NON-EQUI)

SQLD (SQL 개발자) · 조인 · 약 13분

쉽게 말하면

조인은 두 표를 같은 값으로 이어 붙여 한 번에 보는 거예요. 사원 표에는 부서 번호만 있고 부서 이름은 부서 표에 있을 때, 부서 번호가 같은 줄끼리 이어 주면 사원 이름과 부서 이름을 함께 볼 수 있어요. 같은 값으로 이으면 등가 조인, '급여가 이 구간 안' 같은 범위로 이으면 비등가 조인이에요.

시험용 정의

조인(JOIN)은 두 개 이상의 테이블을 공통 값으로 연결해 한 결과로 보는 것이다. 조인 조건이 = 이면 EQUI 조인(등가 조인), BETWEEN·> 같은 다른 비교면 NON-EQUI 조인(비등가 조인)이다. 테이블 N개를 조인하려면 조인 조건이 최소 N-1개 필요하다.

비유로 이해하기

사원 명부에는 부서 '번호'만 있고, 부서 이름은 부서 명부에 있다. 두 명부를 부서 번호로 나란히 맞대어 읽는 것이 EQUI 조인이다. 급여를 보고 급여 등급표의 어느 구간에 드는지 찾는 것은 NON-EQUI 조인이다.

자세히

먼저 알아 둘 말

말뜻
조인 조건두 테이블의 행을 어떻게 짝지을지 정하는 조건. e.deptno = d.deptno
테이블 별칭FROM emp e처럼 테이블에 붙인 짧은 이름. 열 앞에 e.ename으로 쓴다
카티션 곱조인 조건 없이 모든 행끼리 짝지은 결과. 행 수 = 곱
SALGRADE급여 등급표. GRADE(등급), LOSAL(하한), HISAL(상한). NON-EQUI 조인 연습용

EQUI vs NON-EQUI

구분조건예
EQUI 조인= 로 같은 값끼리 연결. 대부분 PK = FKWHERE e.deptno = d.deptno
NON-EQUI 조인= 가 아닌 비교 (BETWEEN, >, <=)WHERE e.sal BETWEEN s.losal AND s.hisal

알아 둘 규칙

  • 두 테이블에 같은 이름의 열이 있으면 테이블 이름이나 별칭을 붙여야 한다. 안 붙이면 "열의 정의가 애매합니다"(ORA-00918) 오류
  • FROM에서 별칭을 붙였다면 그 SQL 안에서는 별칭으로만 불러야 한다 (원래 이름 emp.ename은 오류)
  • 테이블 3개를 조인하면 조인 조건이 최소 2개 필요하다
  • 조인 조건과 일반 조건(e.sal >= 5000)을 WHERE에 AND로 함께 쓸 수 있다
  • 조인 값이 NULL인 행(부서 없는 OH)은 = 비교가 참이 될 수 없어 EQUI 조인 결과에서 빠진다

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. EMP(12행)와 DEPT(4행)를 조인 조건 없이 FROM emp, dept로 조회하면 몇 행이 나올까요?

  1. 4
  2. 12
  3. 16
  4. 48
정답 보기

4번 48

조인 조건이 없으면 모든 행을 서로 짝짓는 카티션 곱이 된다. 12 × 4 = 48행. 조인 조건을 빠뜨리면 생기는 대표적인 실수다.

Q2. 테이블 4개를 조인할 때 필요한 최소 조인 조건 수는?

  1. 2
  2. 3
  3. 4
  4. 5
정답 보기

2번 3

3개다. N개 테이블을 빠짐없이 이으려면 최소 N-1개의 조인 조건이 필요하다. 조건이 모자라면 카티션 곱이 생긴다.

Q3. SALGRADE의 급여 구간으로 등급을 찾는 조인은?

  1. EQUI 조인
  2. CROSS 조인
  3. NON-EQUI 조인
  4. NATURAL 조인
정답 보기

3번 NON-EQUI 조인

= 가 아닌 BETWEEN으로 연결하므로 NON-EQUI 조인.

Q4. SELECT emp.ename FROM emp e WHERE e.sal > 3000의 결과는?

  1. 결과 없음
  2. 정상 실행
  3. 오류: 별칭을 붙였으면 원래 이름으로 부를 수 없다
  4. 카티션 곱
정답 보기

3번 오류: 별칭을 붙였으면 원래 이름으로 부를 수 없다

FROM에서 별칭 e를 붙였으면 SQL 안에서는 e로만 불러야 한다.

Q5. EMP 12행, DEPT 4행을 조인 조건 없이 FROM emp, dept로 조회하면 결과 행 수는?

  1. 4
  2. 12
  3. 16
  4. 48
정답 보기

4번 48

조건이 없으면 카티션 곱이라 12 × 4 = 48행이다.

Q6. EQUI 조인(e.deptno = d.deptno)에서 deptno가 NULL인 사원은?

  1. 결과에서 빠진다
  2. DEPT 첫 부서와 붙는다
  3. 오류가 난다
  4. 결과에 나온다
정답 보기

1번 결과에서 빠진다

NULL = 값은 참이 아니라 빠진다. 남기려면 OUTER JOIN.

헷갈리기 쉬운 O·X

EQUI 조인에서는 조인 열 값이 NULL인 행도 결과에 나온다.

정답 보기

X NULL = 값은 참이 될 수 없어 빠진다. 포함하려면 OUTER JOIN.

조인할 때 두 테이블의 조인 열 이름이 반드시 같아야 한다.

정답 보기

X 값만 비교하면 된다. 열 이름이 달라도 된다(e.mgr = m.empno).

두 테이블에 같은 이름의 열이 있는데 접두사 없이 쓰면 오류가 난다.

정답 보기

O ORA-00918 열의 정의가 애매합니다.

함께 보면 좋은 개념