ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ChatGPT로 데이터 분석 공부하기 #9 JOIN
    ChatGPT로 공부하기/데이터 분석 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;
    • EmployeesDepartments의 모든 데이터를 결합하며, 공통 데이터가 없는 경우 NULL로 출력됩니다.

    (5) CROSS JOIN

    • 두 테이블의 모든 조합을 반환합니다.
    • 테이블1의 각 행이 테이블2의 모든 행과 결합됩니다.

    기본 문법:

    SELECT 열1, 열2, ...
    FROM 테이블1
    CROSS JOIN 테이블2;

    예제:

    SELECT Employees.Name, Departments.DepartmentName
    FROM Employees
    CROSS JOIN Departments;
    • EmployeesDepartments의 모든 행을 조합한 결과를 반환합니다.

    2. JOIN 예제 테이블

    다음은 EmployeesDepartments 두 테이블의 예시입니다.

    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의 실무 활용

    1. 데이터 통합:
      • 예: 고객 정보 테이블과 주문 정보 테이블을 결합하여 고객별 주문 내역 조회.
    2. 보고서 생성:
      • 예: 직원 정보와 부서 정보를 결합해 부서별 직원 목록 작성.
    3. 데이터 정리:
      • 예: 결제 테이블과 상품 테이블을 결합해 결제 내역에 상품 세부 정보 추가.

     

    JOIN은 여러 테이블의 데이터를 효과적으로 연결하여, 분석 및 리포트 작성을 위한 강력한 도구로 활용됩니다.

Designed by Tistory.