조인이란?
조인(JOIN)은 두 개 이상의 테이블에 흩어져 있는 데이터를 한 번에 조회할 수 있게 해주는 기능이다. SQL에서는 꼭 이해하고 넘어가야 하는 핵심 개념 중 하나다. 실무에서는 필요한 정보가 여러 테이블에 나뉘어 저장되어 있는 경우가 많기 때문에, 결국 원하는 결과를 얻으려면 조인을 사용할 수밖에 없다.
조인을 배우기 전에 알아야 할 것
보통은 테이블 하나만 지정해서 조회한다
SELECT *
FROM STUDENT;
FROM절에 테이블을 여러 개 나열하기
SELECT *
FROM STUDENT, MAJOR;
이경우 SQL은 두 테이블의 가능한 모든 조합을 먼저 만든다 따라서 한쪽 테이블의 각 행과 다른 테이블의 각 행을 전부 붙여보는 방식으로 결과를 만든다
FROM절에서 테이블을 여러개 사용하려면 서로 어떤 기준으로 연결할지 만드시 정해줘야한다
테이블에 별칭을 주는 이유
테이블이 2개 이상이면 같은 이름의 컬럼이 존재할 수 있다.
이럴 때 어떤 테이블의 컬럼인지 구분하지 않으면 오류가 발생한다 이 문제를 해결하기 위해 테이블에 별칭을 줄수있다
SELECT A.COL1
, A.COL2
, B.COL2
, B.COL3
FROM TAB1 A, TAB2 B;
이렇게 별칭을 주면 이후 SQL 문장에서 긴 테이블명을 반복하지 않아도 되고, 어떤 테이블의 컬럼인지도 명확하게 구분할 수 있다.
별칭 사용 시 주의사항
테이블에 별칭을 부여했다면 그 뒤에는 원래 테이블명 대신 별칭을 사용해야 한다.
조인의 개념과 필요성
조인은 여러 테이블에 흩어져 있는 데이터를 한 번에 조회하기 위해 필요한 기술이다.
예시) 원하는 데이터를 얻으려면 원래 5개의 테이블을 각각 따로 조회해야 할 수도 있다. 하지만 조인을 사용하면 한 번의 SQL로 필요한 데이터를 가져올 수 있다.
또 데이터베이스는 정규화를 통해 하나의 테이블을 여러 개로 나누는 구조를 자주 사용한다.
이렇게 나누면 중복과 이상 현상을 줄일 수 있지만, 대신 필요한 정보를 다시 합쳐서 봐야 할 때 조인이 필요해진다. 따라서 데이터 품질을 위해 테이블을 나눈 대신, 조회 단계에서 조인으로 다시 연결하는 것이다.
조인의 실행 원리
조인의 실행 원리를 이해하려면 SQL이 먼저 가능한 모든 조합을 만들고, 그다음 필요한 행만 필터링한다
카티션 곱(Cartesian Product)
FROM절에 두 테이블을 넣으면 기본적으로 가능한 모든 조합이 만들어진다.
예시) 회원테이블에 3행이 있고 회원연락처테이블에 4행이 있을때 총 12개의 조합이 만들어진다
SELECT *
FROM 회원, 회원연락처;
이 결과는 대부분의 경우 너무 많고, 서로 관련 없는 데이터까지 섞여 있다. 그래서 조인에서는 여기서 끝나면 안 되고, 실제로 연결되어야 하는 행끼리만 남기기 위한 조건이 필요하다.
조인 조건
조인 조건은 WHERE절에서 두 테이블의 연관 관계를 지정해서, 서로 관련 있는 데이터만 남기도록 하는 조건이다.
SELECT *
FROM 회원 A, 회원연락처 B
WHERE A.회원ID = B.회원ID;
이렇게 하면 카티션 곱으로 만들어진 모든 조합 중에서 회원ID가 일치하는 행만 필터링된다. 결과적으로 회원 정보와 그 회원의 연락처가 연결된 형태로 조회된다. 따라서 조인은 여러 테이블을 나열한 뒤, WHERE절에서 관계를 지정해 필요한 데이터만 남기는 방식이다
일반적으로 조인 조건을 정할 때 두 테이블의 관계를 나타내는 기본 키(PK)와 외래 키(FK)를 많이 이용한다
일반 조건 추가하기
조인 조건만으로 끝나는 것이 아니라, 여기에 원하는 일반 조건을 더 붙일 수도 있다.
예시) 회원아이디가 A0001이고 연락처 구분코드가 휴대폰인것만 조회하고 싶을때
SELECT *
FROM 회원 A, 회원연락처 B
WHERE A.회원ID = B.회원ID
AND A.회원ID = 'A0001'
AND B.구분코드 = '휴대폰';
이렇게 하면 두 테이블의 관계도 맞고, 동시에 내가 원하는 회원과 원하는 연락처 종류만 남게 된다. 따라서 WHERE절 안에는 조인 조건과 일반 필터 조건이 함께 들어갈 수 있다.
순수 관계 연산자 표현
순수 관계 연산자 관점에서 조인을 나비모양 기호로 표시하기도 하지만 결론은 두 관계를 연결해서 필요한 속성만 선택하는 과정 이라는 점을 이론적으로 보여주는 개념이다
동등 조인(Equi-Join)
조인 조건에 등호 비교연산자 = 만 사용하는 조인이다 가장 일반적이고 많이 사용된다 PK-FK 관계 조인의 대부분이 여기에 해당된다
SELECT *
FROM 고객 A, 주문 B
WHERE A.고객ID = B.고객ID;
고객 테이블과 주문 테이블에서 고객ID가 같은 행끼리 연결하는 방식이다.
실무에서 우리가 흔히 말하는 조인의 대부분은 사실상 이 동등 조인이라고 보면 된다.
비동등 조인(Non-Equi Join)
비동등 조인은 조인 조건에 = 이외의 비교 연산자, 예를 들어 >, <, BETWEEN, != 등을 사용하는 조인이다. 범위 매칭이 필요할 때 비동등 조인을 사용한다.
SELECT *
FROM 급여등급 A, 사원 B
WHERE B.급여 BETWEEN A.최소급여 AND A.최대급여;
비동등 조인은 정확히 같은 값이 아니라 일정 범위나 조건에 따라 연결하는 조인이다 다만 설계 구조나 데이터 타입에 따라 제약이 생길 수 있다
동등 조인과 비동등 조인의 구분
조인 조건에 =만 쓰면 동등 조인이고, = 외의 비교 연산자가 들어가면 비동등 조인이다.
'📘꼬부기의 성장서재 > 이기적SQLD 기출문제' 카테고리의 다른 글
| 집합연산자 (0) | 2026.04.07 |
|---|---|
| SQL 표준 조인 정리 (0) | 2026.04.02 |
| ORDER BY절 (0) | 2026.03.31 |
| GROUP BY, HAVING절 (0) | 2026.03.30 |
| WHERE절 (0) | 2026.03.29 |