이 글에서 꼭 잡아야 할 것
조인은 같은 테이블을 다시 붙일 수도 있고, 범위 조건으로 연결할 수도 있다. SELF JOIN, CROSS JOIN, 비등가 조인은 조인 개념을 깊게 이해했는지 확인하는 좋은 주제다.
조인을 단순히 같은 키끼리 붙이는 문법으로만 이해하면 SELF JOIN과 비등가 조인에서 막히기 쉽다. 실제로는 한 행과 다른 행의 관계를 정의하는 방식 자체가 조인이며, 그 관계가 동일값인지 범위인지에 따라 패턴이 달라질 뿐이다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT e.employee_id,
e.last_name AS employee_name,
m.last_name AS manager_name
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.employee_id;
SELECT e.employee_id, g.grade_level
FROM employees e
JOIN job_grades g
ON e.salary BETWEEN g.lowest_sal AND g.highest_sal;
문법 읽는 포인트
- SELF JOIN에서는 같은 테이블이라도 별칭을 완전히 다르게 관리해야 읽기 쉽다.
- CROSS JOIN은 명시적으로 쓸 때만 허용하는 습관이 안전하다.
- 비등가 조인은 `=` 대신 BETWEEN, <, > 같은 범위 조건을 사용한다.
핵심 용어
- SELF JOIN
- CROSS JOIN
- Non Equi Join
직원과 관리자 이름을 한 화면에 표시하기
같은 테이블을 두 번 보는 순간 가장 중요한 것은 역할 구분이다. 한쪽은 직원, 다른 쪽은 관리자처럼 의미를 명확히 놓고 읽어야 컬럼 해석이 흔들리지 않는다.
SELECT e.employee_id,
e.first_name || ' ' || e.last_name AS employee_name,
m.first_name || ' ' || m.last_name AS manager_name
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.employee_id
ORDER BY e.employee_id;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- SELF JOIN은 별칭 의미를 먼저 써 놓고 읽으면 실수가 줄어든다.
- 비등가 조인은 범위표와 조합되는 유형이 많으므로 BETWEEN 패턴을 익혀 두자.
- CROSS JOIN은 조인 조건이 없다는 점 때문에 결과 행 수를 계산하는 문제로 자주 출제된다.
자주 하는 실수
- 같은 테이블 컬럼을 별칭 없이 섞어 읽는 실수
- 비등가 조인을 일반 비교 조인처럼 생각하는 실수
- 조인 조건 누락으로 의도치 않게 CROSS JOIN이 되는 실수
연결 학습
조인 패턴이 어느 정도 정리되었다면 이제 질의 안에 질의를 넣는 서브쿼리로 넘어갈 수 있다. 다음 챕터에서는 단일행 서브쿼리를 먼저 다룬다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
GROUP BY와 HAVING으로 그룹별 집계하기
집계 함수의 진짜 힘은 그룹 단위 요약에서 드러난다. GROUP BY는 데이터를 기준별로 묶고, HAVING은 집계 결과를 다시 필터링한다.
조인의 출발점: ANSI INNER JOIN
관계형 데이터베이스의 핵심은 테이블을 연결해 의미를 복원하는 데 있다. INNER JOIN은 가장 기본적인 조인으로, 서로 매칭되는 데이터만 결합한다.
OUTER JOIN과 오라클 전통 조인 문법
실무에서는 매칭되지 않은 데이터도 보고 싶을 때가 많다. OUTER JOIN은 누락된 쪽을 NULL로 채워 결과에 남기며, 오라클 전통 `(+)` 문법도 시험에서 여전히 자주 등장한다.
서브쿼리 기본: 단일행 서브쿼리 읽는 법
서브쿼리는 하나의 질의 안에서 다른 질의를 이용하는 문법이다. 먼저 한 값을 구하고, 그 값을 바탕으로 바깥 질의를 실행하는 단일행 서브쿼리부터 이해하면 전체 구조가 쉬워진다.
다중행 서브쿼리와 IN, ANY, ALL
서브쿼리 결과가 여러 행이 되는 순간 비교 연산자 선택이 달라진다. IN, ANY, ALL을 정확히 구분하면 다중행 서브쿼리 문제를 안정적으로 풀 수 있다.
댓글을 불러오는 중입니다.