관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

JOIN 심화 5 - FROM 절 JOIN 형태 5 : JOIN 비교 본문

알고리즘 및 자료 관리/SQL

JOIN 심화 5 - FROM 절 JOIN 형태 5 : JOIN 비교

huenuri 2024. 10. 23. 12:23

여러 가지 조인을 비교해 보는 학습을 진행해 볼 것이다.


 

 

 

 

 

이론 6 - FROM 절 JOIN 형태 5 : JOIN 비교

 

 

 

 

 

 

직접 필기하면서 답을 적어보았다. 조인별로 출력되는 행이 다른데 아직도 잘 구분이 안 되는 것도 있다. 실습 문제를 통해 개념을 확장해 보기로 하자.


 

 

 

 

 

실습 6 - FROM 절 JOIN 형태 : LEFT OUTER JOIN

 

 

 


 

 

1. 두 테이블의 정보 조회하기

 

 

MEMBER 테이블에는 member_id가 존재하지만 MEMBER_EMAIL 테이블에는 없는 member_id가 존재한다. 이들은 LEFT OUTER JOIN을 활용해 묶어줄 것이다.


 

 

 

2. LEFT OUTER JOIN을 사용해서 member_name과 email 결합하여 조회하기

 

 

이메일이 없는 사람은 NULL로 잘 채워졌다.

 


 

 

 

 

 

실습 7 - FROM 절 JOIN 형태 : RIGHT OUTER JOIN

 

 


 

 

 

1. 두 테이블 조회하기

 

 

REQUEST 테이블에서 response_id는 존재하지만 응답 내용이 없는 데이터가 존재한다. 이러한 경우 응답 내용은 NULL로 출력하려고 한다. 이럴 때는 RIGHT OUTER JOIN을 사용하는 것이 좋다.


 

 

 

2. 응답 ID를 기준으로 요청 ID, 요청 멤버 ID, 응답 내용을 조회하기

 

 

 

오른쪽의 데이터가 NULL로 채워졌다.


 

 

 

 

 

실습 8 - FROM 절 JOIN 형태 : FULL OUTER JOIN

 

 


 

 

 

1. 두 테이블의 모든 정보 조회하기

 

 

FRONT에는 존재하지만 BACK에는 존재하지 않는 version_id와 version_content_back이 있고, 그 반대의 경우도 있다. 이 부분을 하나씩 코드로 작성해 볼 것이다.


 

 

 

2. LEFT OUTER JOIN을 사용하여 버전 ID를 결합하여 버전 ID, 프론트 버전 내용, 백 버전 내용을 조회하기

 

이렇게 코드를 작성하면 오류가 뜨는데 vision_id가 어느 테이블의 컬럼인지 알 수 없기 때문이다.

 

 

 

 

 

테이블 명을 명시해주자 출력이 잘 되었다. version_id에 version_content_back에는 없는 값은 NULL로 출력되었다.


 

 

 

 

3. RIGHT OUTER JOIN을 사용하여 버전 ID를 결합하여 버전 ID, 프론트 버전 내용, 백 버전 내용을 조회하기

 


 

 

 

4. 중복을 제거하는 집합 연산자를 사용하여 두 개의 쿼리 결합하기

 

 

두 개의 쿼리가 결합된 형태로 잘 출력되었다.

 


 

 

 

 

 

퀴즈 4 - FROM 절 JOIN 형태 2

 

 

 

문제를 틀렸다. 다시 한번 잘 생각해서 풀어보자.

 

 

 

 

+ 기호가 왼쪽에 있으면 LEFT JOIN 같지만 RIGHT JOIN이다. 오른쪽에 있는 모든 값을 조인하고 왼쪽에 있는 것은  값을 없을 때는 NULL로 표시한다.

 


 

 

 

학습을 마치고

조금 어려웠던 LEFT, RIGHT, FULL OUTER JOIN에 대해서 실습해볼 수 있었다. 내가 생각했던 것보다 학습 시간이 좀 더 많이 걸렸다. 그래도 충분히 이해하고 넘어가고 싶었다.

아직 배워야 할 개념이 몇 개 더 남았다.