집 >데이터 베이스 >MySQL 튜토리얼 >INNER JOIN과 OUTER JOIN: SQL 조인에 대한 심층적인 이해
SQL에서는 INNER JOIN과 OUTER JOIN을 사용하여 관련 열을 기준으로 둘 이상의 테이블의 행을 결합합니다. 주요 차이점은 이러한 조인이 일치하지 않는 행을 처리하는 방식에 있습니다.
INNER JOIN은 두 테이블 모두에서 일치하는 값이 있는 행만 반환합니다. 일치하는 항목이 없으면 해당 행은 결과에서 제외됩니다.
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
EmployeeID | Name | DepartmentID |
---|---|---|
1 | Alice | 101 |
2 | Bob | 102 |
3 | Charlie | 103 |
DepartmentID | DepartmentName |
---|---|
101 | HR |
102 | IT |
쿼리:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
OUTER JOIN에는 일치하는 항목이 없더라도 테이블 중 하나 또는 둘 다의 행이 포함됩니다. OUTER JOIN에는 세 가지 유형이 있습니다.
오른쪽 테이블에 일치하는 항목이 없더라도 왼쪽 테이블의 모든 행을 반환합니다.
구문:
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
쿼리:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
왼쪽 테이블에 일치하는 항목이 없더라도 오른쪽 테이블의 모든 행을 반환합니다.
구문:
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
쿼리:
SELECT employees.Name, departments.DepartmentName FROM employees LEFT JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
NULL | Finance |
두 테이블의 모든 행을 반환합니다. 일치하지 않는 행은 NULL로 채워집니다.
구문:
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
쿼리:
SELECT employees.Name, departments.DepartmentName FROM employees RIGHT JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
NULL | Finance |
Feature | INNER JOIN | OUTER JOIN |
---|---|---|
Matching Rows | Returns only matching rows. | Returns all rows from one or both tables. |
Unmatched Rows | Excluded from the result. | Included with NULL values for missing columns. |
Performance | Generally faster. | Can be slower due to more data being processed. |
Variants | Single type. | Includes LEFT, RIGHT, and FULL OUTER JOIN. |
사용 사례
INNER JOIN
: 특정 부서에 근무하는 직원을 찾는 등 일치하는 레코드만 필요할 때 사용합니다.LEFT JOIN
: 부서 배정 여부에 관계없이 모든 직원을 나열하는 등 한 테이블의 모든 레코드가 필요할 때 사용합니다.RIGHT JOIN
: 할당된 직원이 있거나 없는 모든 부서를 나열하는 등 두 번째 테이블의 모든 레코드가 필요할 때 사용합니다.
결론
위 내용은 INNER JOIN과 OUTER JOIN: SQL 조인에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!