본문 바로가기

개발 지식/DB

[RDBMS] JOIN 기본 개념

반응형

공부도 해야하고 밀린 일도 해야하고 술도 먹어야하고 졸라 바쁘다!!!! 마지막 이십대를 불태우자!!!

 

JOIN 이란?

두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법. 검색할 Column이 다른 테이블에 있을 경우에 주로 사용하며 여러개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법이다. PK 혹은 FK로 두 테이블을 연결하며, 서로간의 테이블에서 적어도 하나의 컬럼씩은 공유하고 있어야 한다.

 

테이블을 다음과 같이 준비한다.

  • 환경 : Mac OS
  • DB : MySQL 5.7
  • 테이블1 : 사용자(테이블명: user)
  • 테이블2 : 게시판(테이블명: board)
  • user 테이블은 아이디(Integer, auto_increment, PK)와 이름(varchar) 정보를 가지고 있고 board 테이블은 해당 게시글의 고유 아이디(Integer, auto_increment, PK), 게시글 제목, 게시글 내용, 글쓴이(user 테이블의 id값, 외래키x) 등의 정보가 포함되어 있다.

user 테이블과 board 테이블
각 테이블의 모든 row들

 

INNER JOIN

교집합 개념이다. 기준 테이블과 JOIN한 테이블의 중복된 값을 보여준다.

-- 기본 문법 --
SELECT 테이블별칭.조회할컬럼, 테이블별칭.조회할컬럼
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키....

INNER JOIN 예시

 

LEFT OUTER JOIN

기준테이블의 값 + 테이블과 기준테이블의 중복된 값을 보여준다. 왼쪽 테이블을 기준으로 JOIN을 하겠다고 생각하면 된다. 따라서 (왼쪽 테이블의 모든 데이터 + 왼쪽과 오른쪽 테이블의 중복되는 값)이 검색된다.

-- 기본 문법 --
SELECT 테이블별칭.조회할컬럼, 테이블별칭.조회할컬럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키....

LEFT OUTER JOIN 예시

 

RIGHT OUTER JOIN

LEFT OUTER JOIN의 반대 개념이다. 오른쪽 테이블을 기준으로 JOIN을 하는 것이고, 따라서 결과값은 (오른쪽 테이블의 모든 데이터 + 왼쪽 테이블과 오른쪽 테이블의 중복되는 값)이 검색된다.

-- 기본 문법 --
SELECT 테이블별칭.조회할컬럼, 테이블별칭.조회할컬럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키....

RIGHT OUTER JOIN 예시

 

CROSS JOIN

모든 경우의 수를 전부 표현해주는 방식의 조인문이다. 기준테이블이 왼쪽일 경우 왼쪽의 데이터 한 Row를 오른쪽 테이블 전체와 JOIN하는 방식. 따라서 결과값의 개수도 N(왼쪽 테이블의 개수)*M(오른쪽 테이블의 개수)다.

-- 기본 문법 --
SELECT 테이블별칭.조회할컬럼, 테이블별칭.조회할컬럼
FROM 기준테이블 별칭
CROSS JOIN 조인테이블 별칭

CROSS JOIN 예시

 

SELF JOIN

SELF 라는 단어에서 느낌이 팍 오지 않는가! 자신의 테이블과 조인한다는 의미. 하나의 테이블을 여러번 복사해서 조인한다고 생각하면 된다. 자신이 가지고 있는 컬럼을 다양하게 변형시켜 활용할 경우에 자주 사용한다.

-- 기본 문법 --
SELECT 테이블별칭.조회할컬럼, 테이블별칭.조회할컬럼
FROM 테이블 별칭, 테이블 별칭2

SELF JOIN 예시

 


Reference: https://coding-factory.tistory.com/87

반응형