LEFT/RIGHT JOIN과 OUTER JOIN
일치하지 않는 행을 유지하려면 LEFT JOIN을 사용하고, RIGHT 및 FULL OUTER 조인을 이해하며, WHERE x IS NULL로 누락된 데이터를 찾습니다.
LEFT/RIGHT JOIN과 OUTER JOIN은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
LEFT JOIN: 왼쪽의 모든 행 유지하기
LEFT JOIN은 왼쪽 테이블의 모든 행을 반환하고, 일치하는 오른쪽 열을 함께 표시합니다. 일치하는 행이 없으면 오른쪽 열에는 NULL이 표시됩니다.
SELECT u.id, u.email, o.id AS order_id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;
-- Users without orders still appear, with order_id = NULL.RIGHT JOIN
LEFT JOIN의 반대입니다. 오른쪽의 모든 행을 유지합니다. 대부분의 사람은 가독성을 위해 RIGHT 조인을 LEFT 조인으로 다시 작성합니다.
SELECT u.id, u.email, o.id
FROM orders o
RIGHT JOIN users u ON u.id = o.user_id;
-- Equivalent to LEFT JOIN with sides swapped:
SELECT u.id, u.email, o.id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;FULL OUTER JOIN
양쪽의 행을 모두 유지합니다. 일치하지 않는 열에는 NULL이 표시됩니다.
SELECT u.email, o.id AS order_id
FROM users u
FULL OUTER JOIN orders o ON o.user_id = u.id;일치하지 않는 행 찾기
WHERE right.id IS NULL을 사용하는 LEFT JOIN은 왼쪽 테이블에서 오른쪽에 일치하는 행이 없는 행을 찾습니다. 이것이 전형적인 “안티 조인”입니다.
SELECT u.id, u.email
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL; -- users who have never placed an order집계와 LEFT JOIN
“없으면 0”으로 표시하는 보고서에 유용합니다.
SELECT u.id, u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email
ORDER BY order_count DESC;필터 위치가 중요합니다
WHERE에서 오른쪽 테이블을 필터링하면 LEFT JOIN이 다시 INNER JOIN처럼 작동합니다. LEFT 동작을 유지하려면 조건을 ON에 넣으세요.
-- Drops users without paid orders entirely:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.status = 'paid'
GROUP BY u.id;
-- Keeps users with no paid orders:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id AND o.status = 'paid'
GROUP BY u.id;여러 LEFT JOIN
LEFT JOIN을 연결해서 사용합니다. 각 LEFT JOIN은 해당 연산자의 왼쪽에 있는 행을 유지합니다.
SELECT u.email, o.id, p.name
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
LEFT JOIN products p ON p.id = o.product_id;LEFT JOIN 성능
LEFT JOIN은 일치하지 않는 행도 유지해야 하므로 INNER보다 약간의 오버헤드가 있습니다. 대부분 무시할 수 있는 수준이지만, 일치하지 않는 행이 필요 없다면 INNER JOIN이 조금 더 저렴합니다.
외부 조인과 NULL 출력
LEFT JOIN의 NULL 출력은 이후 코드에서 예상하지 못한 문제를 일으킬 수 있습니다. COALESCE로 기본값을 제공하세요.
SELECT u.email, COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.email;CROSS JOIN — 모든 쌍이 필요할 때
A의 모든 행을 B의 모든 행과 조인합니다. 신중하게 사용하세요.
SELECT d.date, u.id
FROM users u
CROSS JOIN generate_series('2024-01-01', '2024-01-07', INTERVAL '1 day') AS d(date);안티 조인 패턴
“왼쪽에는 있지만 일치하는 행이 없는 데이터”를 찾는 관용적인 방법은 세 가지입니다.
-- LEFT JOIN ... WHERE IS NULL
SELECT u.* FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;
-- NOT EXISTS (often the planner's favourite)
SELECT u.* FROM users u
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);복습
OUTER 조인은 일치하지 않는 행도 유지합니다.
- LEFT = 왼쪽 전체, 일치하지 않으면 오른쪽은 NULL
- RIGHT = 반대 방향이며, 가독성을 위해 LEFT를 사용합니다
- FULL OUTER = 양쪽 모두
- 안티 조인 = LEFT JOIN ... WHERE right IS NULL
빠른 확인
주문이 없어도 사용자를 반환하는 JOIN 유형은 무엇입니까?
자주 묻는 질문
“LEFT/RIGHT JOIN과 OUTER JOIN” 강의는 무료인가요?
네 — “LEFT/RIGHT JOIN과 OUTER JOIN” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“LEFT/RIGHT JOIN과 OUTER JOIN”에서 뭘 배우나요?
일치하지 않는 행을 유지하려면 LEFT JOIN을 사용하고, RIGHT 및 FULL OUTER 조인을 이해하며, WHERE x IS NULL로 누락된 데이터를 찾습니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“LEFT/RIGHT JOIN과 OUTER JOIN” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 조인이 필요한 이유(관계형 모델 복습)
- INNER JOIN 작동 원리
- LEFT/RIGHT JOIN과 OUTER JOIN
- 셀프 조인과 별칭