반응형
OUTER JOIN은 두 테이블을 조인할 때, 조건에 맞지 않는 행들도 포함시켜주는 조인입니다. 일반적인 INNER JOIN은 조건에 맞는 행만 반환하는 반면, OUTER JOIN은 조건에 맞지 않는 행도 포함시켜서 결과에 포함시킵니다.
FULL OUTER JOIN
양쪽 테이블의 모든 행을 반환하고, 일치하지 않는 행은 NULL을 반환합니다.
SELECT
S.STUDENT_ID,
S.NAME,
E.COURSE_ID,
E.GRADE
FROM
STUDENT S
FULL OUTER JOIN
ENROLLMENT E
ON
S.STUDENT_ID = E.STUDENT_ID;
STUDENT_ID | NAME | COURSE_ID | GRADE |
1001 | Alice | CS101 | A |
1002 | Bob | MATH201 | B |
1003 | Charlie | NULL | NULL |
NULL | NULL | CS101 | C |
Charlie는 ENROLLMENT 테이블에 없으므로 NULL이고, 1004는 STUDENT 테이블에 없으므로 NULL입니다.
LEFT OUTER JOIN
왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 행이 없으면 NULL을 반환합니다.
SELECT
S.STUDENT_ID,
S.NAME,
E.COURSE_ID,
E.GRADE
FROM
STUDENT S
LEFT OUTER JOIN
ENROLLMENT E
ON
S.STUDENT_ID = E.STUDENT_ID;
STUDENT_ID | NAME | COURSE_ID | GRADE |
1001 | Alice | CS101 | A |
1002 | Bob | MATH201 | B |
1003 | Charlie | NULL | NULL |
Charlie는 ENROLLMENT 테이블에 없으므로 NULL로 반환됩니다.
RIGHT OUTER JOIN
오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 행이 없으면 NULL을 반환합니다.
SELECT
S.STUDENT_ID,
S.NAME,
E.COURSE_ID,
E.GRADE
FROM
STUDENT S
RIGHT OUTER JOIN
ENROLLMENT E
ON
S.STUDENT_ID = E.STUDENT_ID;
STUDENT_ID | NAME | COURSE_ID | GRADE |
1001 | Alice | CS101 | A |
1002 | Bob | MATH201 | B |
NULL | NULL | CS101 | C |
1004는 STUDENT 테이블에 없으므로 NULL로 반환됩니다.
반응형
'Computer Science > SQL' 카테고리의 다른 글
SQL | Selection, JOIN, View 실습 (vetdb 예제) - 2 (0) | 2025.04.26 |
---|---|
SQL | 관계형 데이터베이스 설계 (vetdb에서 Owner와 Pet 테이블 만들기) - 1 (2) | 2025.04.25 |
SQL | INNER JOIN, NATURAL JOIN, EQUI JOIN 완벽 정리 (3) | 2025.04.23 |
SQL | 관계형 데이터베이스에서 Cartesian Product란? (0) | 2025.04.22 |
SQL | UNION과 DIFFERENCE 정리 (0) | 2025.04.21 |