-
ChatGPT로 데이터 분석 공부하기 #9 JOINChatGPT로 공부하기/데이터 분석 2024. 11. 15. 19:09

SQL에서 JOIN은 여러 테이블에서 데이터를 결합하여 원하는 정보를 조회할 때 사용하는 중요한 기능입니다. 테이블 간의 관계를 설정하고 관련 데이터를 함께 출력합니다.
1. JOIN의 종류
JOIN에는 여러 유형이 있으며, 각 JOIN은 테이블 간의 관계에 따라 다른 방식으로 데이터를 결합합니다.
(1) INNER JOIN
- 두 테이블 간 공통 데이터만 조회합니다.
ON절을 사용하여 두 테이블을 연결하는 조건을 지정합니다.
기본 문법:
SELECT 열1, 열2, ... FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.공통열 = 테이블2.공통열;예제:
SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Employees테이블과Departments테이블에서DepartmentID를 기준으로 공통된 데이터를 결합합니다.
(2) LEFT JOIN (LEFT OUTER JOIN)
- 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 공통 데이터를 조회합니다.
- 오른쪽 테이블에 해당하는 데이터가 없으면
NULL로 채워집니다.
기본 문법:
SELECT 열1, 열2, ... FROM 테이블1 LEFT JOIN 테이블2 ON 테이블1.공통열 = 테이블2.공통열;예제:
SELECT Employees.Name, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Employees테이블의 모든 행을 포함하며,Departments에 대응하는 값이 없으면NULL로 출력합니다.
(3) RIGHT JOIN (RIGHT OUTER JOIN)
- 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 공통 데이터를 조회합니다.
- 왼쪽 테이블에 해당하는 데이터가 없으면
NULL로 채워집니다.
기본 문법:
SELECT 열1, 열2, ... FROM 테이블1 RIGHT JOIN 테이블2 ON 테이블1.공통열 = 테이블2.공통열;예제:
SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Departments테이블의 모든 행을 포함하며,Employees에 대응하는 값이 없으면NULL로 출력합니다.
(4) FULL JOIN (FULL OUTER JOIN)
- 두 테이블의 모든 데이터를 조회합니다. 두 테이블에 공통 데이터가 없으면
NULL로 채워집니다.
기본 문법:
SELECT 열1, 열2, ... FROM 테이블1 FULL JOIN 테이블2 ON 테이블1.공통열 = 테이블2.공통열;예제:
SELECT Employees.Name, Departments.DepartmentName FROM Employees FULL JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Employees와Departments의 모든 데이터를 결합하며, 공통 데이터가 없는 경우NULL로 출력됩니다.
(5) CROSS JOIN
- 두 테이블의 모든 조합을 반환합니다.
- 테이블1의 각 행이 테이블2의 모든 행과 결합됩니다.
기본 문법:
SELECT 열1, 열2, ... FROM 테이블1 CROSS JOIN 테이블2;예제:
SELECT Employees.Name, Departments.DepartmentName FROM Employees CROSS JOIN Departments;Employees와Departments의 모든 행을 조합한 결과를 반환합니다.
2. JOIN 예제 테이블
다음은
Employees와Departments두 테이블의 예시입니다.Employees 테이블:
EmployeeID Name DepartmentID 1 Alice 101 2 Bob 102 3 Carol NULL Departments 테이블:
DepartmentID DepartmentName 101 HR 102 IT 103 Sales
JOIN 결과
INNER JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Name DepartmentName Alice HR Bob IT
LEFT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Name DepartmentName Alice HR Bob IT Carol NULL
RIGHT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Name DepartmentName Alice HR Bob IT NULL Sales
FULL JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees FULL JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;Name DepartmentName Alice HR Bob IT Carol NULL NULL Sales
3. JOIN의 실무 활용
- 데이터 통합:
- 예: 고객 정보 테이블과 주문 정보 테이블을 결합하여 고객별 주문 내역 조회.
- 보고서 생성:
- 예: 직원 정보와 부서 정보를 결합해 부서별 직원 목록 작성.
- 데이터 정리:
- 예: 결제 테이블과 상품 테이블을 결합해 결제 내역에 상품 세부 정보 추가.
JOIN은 여러 테이블의 데이터를 효과적으로 연결하여, 분석 및 리포트 작성을 위한 강력한 도구로 활용됩니다.
'ChatGPT로 공부하기 > 데이터 분석' 카테고리의 다른 글
ChatGPT로 데이터 분석 공부하기 #11 윈도우함수 (5) 2024.11.15 ChatGPT로 데이터 분석 공부하기 #10 서브쿼리 (2) 2024.11.15 ChatGPT로 데이터 분석 공부하기 #8 집계함수 (1) 2024.11.09 ChatGPT로 데이터 분석 공부하기 #7 CRUD (2) 2024.11.07 ChatGPT로 데이터 분석 공부하기 #5 정규분포 (8) 2024.11.07