2025년 7월 24일 목요일(42일차)

Jeonghoon·2025년 7월 24일

jeonghoon's Study

목록 보기
44/128

🧩 SQL JOIN 완벽 정리


🧠 [ JOIN이란? ]

서로 다른 테이블 간의 데이터를 결합하여 하나의 결과로 조회하는 SQL 문법

항목설명
📘 정의두 개 이상의 테이블을 연결해 하나의 결과로 만드는 것
🧩 목적여러 테이블에 분산된 데이터를 논리적으로 결합
💡 예시회원 테이블 + 주문 테이블 → 특정 회원의 주문 내역

🔍 [ 기본 JOIN 방식 ]

JOIN 방식설명특징
SELECT * FROM table1, table2;단순 두 테이블을 모두 결합 (Cartesian Product)⚠️ 테이블 간 곱셈 발생 → 비권장
SELECT * FROM table1, table2 WHERE table1.pk = table2.pk;WHERE 조건을 통한 결합가독성 ↓ / 실무 비권장

🔗 [ NATURAL JOIN ]

기본키와 외래키의 속성명이 같을 때만 사용 가능

SELECT * FROM table1 NATURAL JOIN table2;
장점단점
SQL 문장이 간결속성명이 동일하지 않으면 실행 불가 / 의도치 않은 조인 발생 가능
⚠️ 실무에서는 거의 사용하지 않음

🧭 [ JOIN USING ]

공통 컬럼 이름이 같을 때, 명시적으로 조인할 컬럼 지정

SELECT * FROM table1 JOIN table2 USING(pk);
장점단점
코드 간결 / 명시적컬럼명이 반드시 같아야 함

⚙️ [ INNER JOIN ]

두 테이블 간의 교집합(공통된 값) 만 조회하는 조인 방식
실무에서 가장 많이 사용됨

SELECT * 
FROM table1 
INNER JOIN table2 
ON table1.pk = table2.pk;
항목설명
💡 INNER 생략 가능JOIN만 써도 동일한 결과
📘 별칭 사용 가능table1 t1 JOIN table2 t2 ON t1.pk = t2.pk
🧩 결과두 테이블의 공통 데이터만 출력

🧱 [ OUTER JOIN ]

교집합뿐만 아니라 한쪽 테이블의 모든 데이터를 포함시켜 조회하는 방식
OUTER 키워드는 생략 가능


🔹 LEFT OUTER JOIN (왼쪽 기준)

SELECT * 
FROM table1 t1 
LEFT OUTER JOIN table2 t2 
ON t1.pk = t2.pk;
기준결과
왼쪽 테이블(table1)모든 레코드 포함
오른쪽 테이블(table2)교집합만 표시, 나머지는 NULL

📊 비유:
👉 “왼쪽 테이블을 기준으로 오른쪽의 대응값을 가져오되, 없으면 NULL로 표시”


🔸 RIGHT OUTER JOIN (오른쪽 기준)

SELECT * 
FROM table1 t1 
RIGHT OUTER JOIN table2 t2 
ON t1.pk = t2.pk;
기준결과
오른쪽 테이블(table2)모든 레코드 포함
왼쪽 테이블(table1)교집합만 표시, 나머지는 NULL

📊 비유:
👉 “오른쪽 테이블을 기준으로 왼쪽의 대응값을 가져오되, 없으면 NULL로 표시”


🔄 [ UNION ]

2개 이상의 SELECT 결과를 하나로 합치는 연산자

SELECT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.pk = t2.pk
UNION
SELECT * FROM table1 t1 RIGHT JOIN table2 t2 ON t1.pk = t2.pk;
특징설명
🔁 중복 제거UNION은 중복된 행을 제거 (UNION ALL은 중복 허용)
💡 활용 예시LEFT + RIGHT JOIN 결과를 하나로 결합

⚠️ [ WHERE IS NULL ]

차집합(Difference)을 구할 때 사용

SELECT t1.* 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.pk = t2.pk 
WHERE t2.pk IS NULL;
항목설명
💡 의미table1에는 있고, table2에는 없는 데이터 조회
🧩 활용 예시“삭제된 회원” / “미등록 주문” 등 확인 시

🧬 [ 3개 테이블 JOIN ]

여러 테이블을 순차적으로 조인 가능

SELECT * 
FROM 테이블A A 
JOIN 테이블B B ON A.pk = B.pk 
JOIN 테이블C C ON B.pk = C.pk;
특징설명
📘 연쇄 조인 가능A→B→C 순서로 조인
⚙️ 주의점ON 조건 명확히 지정해야 의도된 결과 도출

💭 [ 생각할 점 ]

항목내용
💡 메소드 반환값하나의 메소드는 하나의 타입만 반환 가능
⚙️ 해결 방법여러 타입 반환 시, 객체로 묶거나 메소드를 분리
🔒 비밀번호 처리비밀번호 비교용 검증 메소드 별도 구현 권장

0개의 댓글