한 번쯤은 정리하는게 도움이 될 거 같아 정리함
이 그림

Table A
| ID | NAME |
| 1 | 김나나 |
| 2 | 박사랑 |
| 3 | 이키키 |
Table B
| ID | GENDER |
| 1 | 여 |
| 2 | 여 |
| 4 | 여 |
| 5 | 남 |
INNER JOIN
교집합

SELECT A.ID, A.NAME, B.GENDER
FROM A INNER JOIN B
ON A.ID = B.ID;
| ID | NAME | GENDER |
| 1 | 김나나 | 여 |
| 2 | 박사랑 | 여 |
LEFT JOIN

SELECT A.ID, A.NAME, B.GENDER
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID;
| ID | NAME | GENDER |
| 1 | 김나나 | 여 |
| 2 | 박사랑 | 여 |
| 3 | 이키키 | NULL |
RIGHT JOIN

SELECT A.ID, A.NAME, B.GENDER
FROM A RIGHT OUTER JOIN B
ON A.ID = B.ID;
| ID | NAME | GENDER |
| 1 | 김나나 | 여 |
| 2 | 박사랑 | 여 |
| 4 | NULL | 여 |
| 5 | NULL | 남 |
OUTER JOIN

SELECT A.ID, A.NAME, B.GENDER
FROM A FULL OUTER JOIN B
ON A.ID = B.ID
FULL OUER JOIN -> JOIN 써도 된다.
| ID | NAME | GENDER |
| 1 | 김나나 | 여 |
| 2 | 박사랑 | 여 |
| 3 | 이키키 | NULL |
| 4 | NULL | 여 |
| 5 | NULL | 남 |
A-B
LEFR JOIN 값 중 WHERE 조건으로 NULL 인 값 조회

SELECT A.ID, A.NAME, B.GENDER
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID;
WHERE B.ID IS NULL
| ID | NAME | GENDER |
| 3 | 이키키 | NULL |
B-A

SELECT A.ID, A.NAME, B.GENDER
FROM A RIGHT OUTER JOIN B
ON A.ID = B.ID
WHERE A.ID IS NULL
| ID | NAME | GENDER |
| 4 | NULL | 여 |
| 5 | NULL | 남 |
교집합 제외

SELECT A.ID, A.NAME, B.GENDER
FROM A FULL OUTER JOIN B
ON A.ID = B.ID
WHERE A.ID IS NULL OR B.ID IS NULL
OR
| ID | NAME | GENDER |
| 3 | 이키키 | NULL |
| 4 | NULL | 여 |
| 5 | NULL | 남 |
틀린 게 있다면 편하게 댓글로 알려주시면 감사하겠습니다.
'프로그래머스 > SQL' 카테고리의 다른 글
| ORACLE 코테 준비 정리 (1) | 2023.10.21 |
|---|---|
| STRING/DATE 유형 모음 [프로그래머스.oracle] (SQL 고득점 키트) (0) | 2023.10.20 |
| JOIN 유형 모음 [프로그래머스].oracle (SQL 고득점 키트) (1) | 2023.10.19 |
| IS NULL 유형 모음 [프로그래머스] .ORACLE (SQL 고득점 키트) (0) | 2023.10.18 |
| 다시[프로그래머스] 중복 제거하기.oracle (0) | 2023.10.16 |