SQL : JOIN

홍진우·2022년 3월 2일
0

SQL

목록 보기
3/4
post-custom-banner

드디어 대망의 JOIN이다.
소마 코테를 준비하며 SQL을 벼락치기...하고 있는 지금 가장 출제율도 높고, 헷갈릴수 있는 JOIN의 개념을 문제들과 함께 정리해 보고자 한다.

<전체 개념 이미지>

INNER JOIN

교집합

  • 오른쪽 테이블 B에 일치하는 왼쪽 테이블 A의 모든 행을 반환
SELECT <select_list> 
	FROM Table_A A
	INNER JOIN Table_B B
	ON A.Key = B.Key;

LEFT(OUTER) JOIN

왼쪽 집합

  • 오른쪽 테이블 B와의 일치여부에 관계없이, 테이블 A의 모든행을 반환하며, 이렇게 생성된 테이블을 기준으로 오른쪽 테이블에서 일치하는 모든 행을 반환함
  • 즉, A의 기준에 맞는 애들만 오른쪽 테이블 B에서 반환함
SELECT <select_list>
	FROM Table_A A
	LEFT JOIN Table_B B
	ON A.Key = B.Key;

RIGHT(OUTER) JOIN

왼쪽 집합

  • 왼쪽 테이블 A와의 일치여부에 관계없이, 테이블 B의 모든행을 반환하며, 이렇게 생성된 테이블을 기준으로 왼쪽 테이블에서 일치하는 모든 행을 반환함
  • 즉, B의 기준에 맞는 애들만 왼쪽 테이블 A에서 반환함
SELECT <select_list>
	FROM Table_A A
	RIGHT JOIN Table_B B
	ON A.Key = B.Key;

OUTER JOIN

합집합
오른쪽 테이블 B와 일치하는 왼쪽 테이블 A의 행은 결합하며, 일치하지 않는 행도 포함해서 두 테이블의 모든 행을 반환

SELECT <select_list>
	FROM Table_A A
	FULL OUTER JOIN Table_B B
	ON A.Key = B.Key;

예제 1


입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 조회해야한다.

따라서, 입양을 간 정보가 담긴 OUT 테이블에는 있고, 보호소에 들어온 정보가 담긴 INS에는 없는 행을 ID를 기준으로 LEFT JOIN 한다.
-> OUT LEFT JOIN INS

접근 방식
:

SELECT 
-- 코드를 입력하세요
SELECT OUTS.ANIMAL_ID, OUTS.NAME
    FROM ANIMAL_OUTS OUTS
    LEFT JOIN ANIMAL_INS INS 
    ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
    WHERE INS.ANIMAL_ID IS NULL
    ORDER BY OUTS.ANIMAL_ID ASC

profile
Yonsei Univ. Sports Industry studies/ Computer Science / Applied Statistics
post-custom-banner

0개의 댓글