inblog logo
|
heo-gom
    database

    join 방식

    허성재's avatar
    허성재
    Aug 30, 2024
    join 방식
     
    JOIN은 SQL에서 두 개 이상의 테이블을 연결하여 원하는 데이터를 조회할 때 사용하는 명령입니다. JOIN을 사용하면 서로 다른 테이블에 저장된 관련 데이터를 하나의 결과로 결합할 수 있습니다. JOIN의 종류와 사용 예제를 자세히 설명드리겠습니다.

    기본적인 테이블 예시

    두 개의 테이블이 있다고 가정해보겠습니다:
    테이블: Employees
    EmployeeID
    Name
    DepartmentID
    1
    Alice
    101
    2
    Bob
    102
    3
    Charlie
    101
    4
    David
    103
    테이블: Departments
    DepartmentID
    DepartmentName
    101
    HR
    102
    IT
    103
    Finance
    104
    Marketing

    1. INNER JOIN

    INNER JOIN은 두 테이블 간의 매칭된 데이터를 반환합니다. 즉, JOIN 조건에 일치하는 행들만 반환됩니다.
    SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    결과:
    Name
    DepartmentName
    Alice
    HR
    Charlie
    HR
    Bob
    IT
    David
    Finance
    여기서 INNER JOIN은 Employees 테이블의 DepartmentID와 Departments 테이블의 DepartmentID가 일치하는 행들만 반환합니다. 따라서 마케팅 부서(DepartmentID 104)에 대한 정보는 결과에 나타나지 않습니다.

    2. LEFT JOIN (또는 LEFT OUTER JOIN)

    LEFT JOIN은 왼쪽 테이블(첫 번째 테이블)의 모든 데이터를 반환하고, 오른쪽 테이블에서 일치하는 데이터가 없으면 NULL 값을 반환합니다.
    SELECT Employees.Name, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    결과:
    Name
    DepartmentName
    Alice
    HR
    Charlie
    HR
    Bob
    IT
    David
    Finance
    LEFT JOIN은 Employees 테이블의 모든 데이터를 반환하며, 모든 Employee가 DepartmentID와 일치하는 부서를 가지므로 이 예제에서는 NULL 값이 나타나지 않습니다. 하지만 만약 Employees에 DepartmentID가 없는 행이 있었다면, 그 행에 대해 DepartmentName은 NULL로 표시됩니다.

    3. RIGHT JOIN (또는 RIGHT OUTER JOIN)

    RIGHT JOIN은 오른쪽 테이블(두 번째 테이블)의 모든 데이터를 반환하고, 왼쪽 테이블에서 일치하는 데이터가 없으면 NULL 값을 반환합니다.
    SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    결과:
    Name
    DepartmentName
    Alice
    HR
    Charlie
    HR
    Bob
    IT
    David
    Finance
    NULL
    Marketing
    여기서 RIGHT JOIN은 Departments 테이블의 모든 데이터를 반환하며, Employees 테이블에 일치하는 데이터가 없는 경우 NULL 값을 반환합니다. 마케팅 부서(DepartmentID 104)는 Employees 테이블에서 일치하는 데이터가 없기 때문에 Name 칼럼이 NULL로 반환됩니다.

    4. FULL OUTER JOIN

    FULL OUTER JOIN은 두 테이블의 모든 데이터를 반환합니다. 일치하는 데이터가 없으면 NULL 값을 반환합니다.
    SELECT Employees.Name, Departments.DepartmentName FROM Employees FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    결과:
    Name
    DepartmentName
    Alice
    HR
    Charlie
    HR
    Bob
    IT
    David
    Finance
    NULL
    Marketing
    FULL OUTER JOIN은 Employees 테이블과 Departments 테이블의 모든 데이터를 반환합니다. Employees에 없는 마케팅 부서의 데이터는 Name이 NULL로 반환되며, 만약 Employees에 일치하지 않는 데이터가 있다면 그에 해당하는 DepartmentName도 NULL로 표시됩니다.

    5. CROSS JOIN

    CROSS JOIN은 두 테이블 간의 카르테시안 곱을 반환합니다. 즉, 왼쪽 테이블의 각 행이 오른쪽 테이블의 모든 행과 결합됩니다.
    SELECT Employees.Name, Departments.DepartmentName FROM Employees CROSS JOIN Departments;
    결과:
    Name
    DepartmentName
    Alice
    HR
    Alice
    IT
    Alice
    Finance
    Alice
    Marketing
    Bob
    HR
    Bob
    IT
    Bob
    Finance
    Bob
    Marketing
    Charlie
    HR
    Charlie
    IT
    Charlie
    Finance
    Charlie
    Marketing
    David
    HR
    David
    IT
    David
    Finance
    David
    Marketing
    CROSS JOIN은 Employees의 모든 행을 Departments의 모든 행과 결합하므로 4개의 Employees 행과 4개의 Departments 행이 결합하여 총 16개의 결과를 반환합니다.

    6. SELF JOIN

    SELF JOIN은 같은 테이블을 두 번 조인하여 자신과 연결하는 것을 의미합니다.
    예를 들어, 직원 테이블에서 각 직원의 매니저를 찾고자 할 때 사용될 수 있습니다.
    SELECT E1.Name AS Employee, E2.Name AS Manager FROM Employees E1 LEFT JOIN Employees E2 ON E1.ManagerID = E2.EmployeeID;
    이 예제에서 Employees 테이블을 두 번 사용하여 각 직원의 매니저 이름을 찾습니다.
     
    Share article

    heo-gom

    RSS·Powered by Inblog