본문 바로가기

Database

[Database] JOIN 비교 (INNER JOIN, OUTER JOIN, FULL JOIN)

일하면서 DB를 써본 적이 없어서.. 기억이 잘 나지않아 정리해보았다.

 

Join (조인)

- 두 개의 테이블의 데이터를 묶어 한번에 조회할 때 사용한다.

두 테이블을 어떻게 결합하느냐에 따라 조회 결과가 달라진다.

 

INNER JOIN (이너 조인)

STUDENT 테이블과 GRADE 테이블의 교집합이다.

 

쿼리

SELECT * 
	FROM STUDENT
INNER JOIN GRADE
	ON STUDENT.ID = GRADE.ID

두 테이블에 모두 공통으로 존재하는 ID들만 조인되어 다음과 같은 결과가 나온다.

 

OUTER JOIN (아우터 조인)

특정 테이블을 기준으로 조회한다.

LEFT OUTER JOIN은 왼쪽 테이블 (STUDENT) 기준,

RIGHT OUTER JOIN은 오른쪽 테이블 (GRADE) 기준,

FULL OUTER JOIN (FULL JOIN) 은 두 테이블 모두를 조회한다.

쿼리

SELECT * 
	FROM STUDENT
LEFT OUTER JOIN GRADE
	ON STUDENT.ID = GRADE.ID
    
SELECT * 
	FROM STUDENT
RIGHT OUTER JOIN GRADE
	ON STUDENT.ID = GRADE.ID
    
SELECT * 
	FROM STUDENT
FULL OUTER JOIN GRADE
	ON STUDENT.ID = GRADE.ID

 

LEFT OUTER JOIN

 

왼쪽 테이블인 STUDENT를 기준으로 조회된다.

GRADE의 ID가 STUDENT의 ID에 존재하여 매칭되면 GRADE를 출력, 존재하지 않으면 NULL을 출력한다.

 

RIGHT OUTER JOIN

 

오른쪽 테이블인 GRADE를 기준으로 조회된다.

STUDENT의 ID가 GRADE의 ID에 존재하여 매칭되면 NAME를 출력, 존재하지 않으면 NULL을 출력한다.

 

FULL OUTER JOIN

 

ID가 매칭되면 출력, 존재하지 않으면 NULL을 출력한다.