Q10) 이젠 테이블이 2개입니다
다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.employees 테이블
id department_id name 1 101 르탄이 2 102 배캠이 3 103 구구이 4 101 이션이departments 테이블
id name 101 인사팀 102 마케팅팀 103 기술팀
SELECT e.name, d.name
FROM employees e
JOIN departments d ON e.department_id = d.id
SELECT e.name
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.name = '기술팀'
SELECT d.name, COUNT(e.id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
GROUP BY d.id
SELECT d.name
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
WHERE e.id IS NULL
SELECT e.name
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.name = '마케팅팀'
핵심 개념 정리
🔹 SQL 조인(JOIN) 개념 정리
조인(JOIN)은 두 개 이상의 테이블을 연결하여 데이터를 조회하는 SQL 연산입니다.
조인을 사용하면 공통된 키(Primary Key - Foreign Key 관계)를 기준으로 여러 테이블을 하나의 결과 집합으로 합칠 수 있습니다.
INNER JOIN | 공통 데이터만 조회 | 교집합 |
LEFT JOIN | 왼쪽 테이블 모든 행 + 일치하는 오른쪽 데이터 | 왼쪽 테이블 기준 |
RIGHT JOIN | 오른쪽 테이블 모든 행 + 일치하는 왼쪽 데이터 | 오른쪽 테이블 기준 |
FULL OUTER JOIN | 모든 데이터를 가져옴 (일치하지 않는 경우 NULL 포함) | 합집합 |
SELF JOIN | 같은 테이블을 두 번 사용하여 조인 | 자기 참조 |
👉 조인을 사용하면 여러 테이블을 결합하여 원하는 데이터를 효율적으로 가져올 수 있다! 🚀
1. INNER JOIN (내부 조인)
- 두 테이블에서 공통된 데이터가 있는 행만 결과로 반환
- ON 조건을 만족하는 경우에만 데이터가 결합됨
SELECT e.name, d.name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
✅ 결과:
직원 이름 | 부서 이름 |
르탄이 | 인사팀 |
배캠이 | 마케팅팀 |
구구이 | 기술팀 |
이션이 | 인사팀 |
2. LEFT JOIN (왼쪽 조인)
- 왼쪽(기준) 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에 매칭되는 데이터가 없으면 NULL 반환
SELECT d.name, COUNT(e.id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
GROUP BY d.id;
✅ 결과 (만약 어떤 부서에 직원이 없으면 NULL이 들어감):
부서 이름 | 직원 수 |
인사팀 | 2 |
마케팅팀 | 1 |
기술팀 | 1 |
기획팀 | 0 |
'PM > SQL' 카테고리의 다른 글
[내일배움캠프 TIL] 사전캠프 12일차 SQL 기초(완) (0) | 2025.03.25 |
---|---|
[내일배움캠프 TIL] 사전캠프 10일차 SQL 기초(9) (0) | 2025.03.21 |
[내일배움캠프 TIL] 사전캠프 9일차 SQL 기초(8) (1) | 2025.03.20 |
[내일배움캠프 TIL] 사전캠프 8일차 SQL 기초(7) (0) | 2025.03.19 |
[내일배움캠프 TIL] 사전캠프 7일차 SQL 기초(6) (0) | 2025.03.18 |