한 번쯤은 정리하는게 도움이 될 거 같아 정리함
이 그림
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 |