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 JOINEmployees 테이블의 DepartmentIDDepartments 테이블의 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 JOINEmployees 테이블의 모든 데이터를 반환하며, 모든 EmployeeDepartmentID와 일치하는 부서를 가지므로 이 예제에서는 NULL 값이 나타나지 않습니다. 하지만 만약 EmployeesDepartmentID가 없는 행이 있었다면, 그 행에 대해 DepartmentNameNULL로 표시됩니다.

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 JOINDepartments 테이블의 모든 데이터를 반환하며, 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 JOINEmployees 테이블과 Departments 테이블의 모든 데이터를 반환합니다. Employees에 없는 마케팅 부서의 데이터는 NameNULL로 반환되며, 만약 Employees에 일치하지 않는 데이터가 있다면 그에 해당하는 DepartmentNameNULL로 표시됩니다.

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 JOINEmployees의 모든 행을 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