-
[SQL] JOIN이란? JOIN의 종류(INNER, LEFT, RIGHT, FULL OUTER JOIN)스터디 노트 2023. 11. 17. 14:55
📌 들어가며
평상시 RDB를 사용하며 자주 사용했던 Query들에 대해 보던 중, JOIN쿼리에 대해 문득 생각을 하게 되었습니다.
JOIN은 왜 쓰는진 알겠는데, 유용한 것도 알겠는데, 제대로 정리해본적이 있나?
그래서 오늘은 생각난김에 정리해보는 SQL JOIN문 스터디입니다.
📌 JOIN이란? 왜 쓰는가?
일단 JOIN은 왜 쓰는걸까요?
우리가 관계형 데이터베이스(RDB)를 설계하다보면 자연스레 테이블과 그들의 관계, PK, FK등을 활용하게 됩니다.
우리가 키를 두고 테이블을 설계하다보니 비즈니스 로직, 특히 도메인과의 차이점이 발생하곤 하죠.
따라서 비즈니스 로직상 하나의 도메인을 만들어내기 위한 데이터가 여러 테이블에 산재되어 있을 경우 우리는 JOIN문을 통해 비즈니스에 유효한 도메인 데이터를 만들고 이를 도메인에 적용해 비즈니스 로직을 수행하게 됩니다.
이러한 상황에서 두 개 이상의 테이블에서 데이터를 조회해오기 위해 JOIN문을 사용하고 그 데이터의 위치에 따라 INNER JOIN, OUTER JOIN(LEFT, RIGHT, FULL) 등의 조인문을 사용하게 됩니다.
📌 JOIN문의 종류
위 그림이 굉장히 알아보기 쉽게 표현이 되어있습니다.
✅ INNER JOIN 사용법
INNER JOIN은 내부조인이라고 하며 두 테이블을 조인할 때 두 테이블에 모두 지정한 열의 데이터가 있어야 합니다.
가장 많이 사용하는 조인이며 기본적으로 조인이라고 함은 INNER JOIN을 의미합니다.
✅ OUTER JOIN
OUTER JOIN은 외부조인이라고 하며 두 테이블을 조인할 때 한 쪽을 기준으로 데이터가 존재할 경우 결과를 도출합니다.
즉, LEFT면 좌측(A)이 우선이고 RIGHT면 우측(B)이 우선입니다.
FULL의 경우 보이시는 바와 같이 모든 데이터를 가져온다고 보시면 됩니다.
✅ LEFT OUTER JOIN 사용법
왼쪽(A)의 테이블을 기준으로 데이터를 조회합니다.
즉, A에만 데이터가 있고 B에는 그에 해당하는 데이터가 없을 경우 B 테이블의 컬럼 값은 NULL로 표기됩니다.
✅ RIGHT OUTER JOIN 사용법
LEFT OUTER JOIN과 반대로 오른쪽(B)의 테이블을 기준으로 데이터를 조회합니다.
즉, A에는 그에 해당하는 데이터가 없고 B에 데이터가 있을 경우 A 테이블의 컬럼 값은 NULL로 표기됩니다.
✅ FULL OUTER JOIN 사용법
왼쪽(A)과 오른쪽(B) 테이블의 데이터를 전부 다 가져옵니다.
즉, A 테이블에 있으나 B 테이블에 없을 경우 B 테이블 컬럼값을 NULL로 표기하고, B 테이블에 있으나 A 테이블에 없는 경우 A 테이블 컬럼값을 NULL로 표기합니다.
📌 마치며
아주 잘 표현된 그림이 있어 부랴부랴 정리를 해보았습니다.
안까먹길 바라며...
'스터디 노트' 카테고리의 다른 글
[ClickHouse] 클릭하우스를 도커로 띄워보기! ClickHouse with Docker Container (2) 2023.11.21 [ClickHouse] 클릭하우스란 무엇일까? (0) 2023.11.20 깔짝 맛보는 프로메테우스(Prometheus) + 그라파나(Grafana) 를 이용한 시스템 모니터링 대시보드 만들기 (0) 2023.11.16 MongoDB + Docker 설치 및 기본 동작 방법 bash: mongo: command not found (1) 2023.11.09 도커 + 카프카 명령어 (0) 2023.11.08