[SQL] JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN

오도원공육사·2021년 10월 15일
0

SQL

목록 보기
9/15

출처.
코딩교육 티씨피스쿨

JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현한다.

  1. INNER JOIN
  2. LEFT JOIN
  3. RIGHT JOIN

1. INNER JOIN

  • INNER JOIN은 ON 절과 함께 사용한다.
  • ON 절의 조건을 만족하는 레코드만을 가져온다.
  • INNER JOIN에서 INNER은 생략 가능하다.
SELECT [FIELD, ...] FROM TABLE1
INNER JOIN TABLE2
ON 조건식

예시

  • Reservation 테이블의 Name 필드와 Customer 테이블의 Name 필드가 서로 일치하는 레코드에 대해서 INNER JOIN으로 조회
SELECT * FROM Reservation
INNER JOIN Customer
ON Reservation.Name = Customer.Name;

-- 별칭 사용
SELECT * FROM Reservation AS R
INNER JOIN Customer AS C
ON R.Name = C.Name;

2. LEFT JOIN

  • 첫번째 테이블을 기준으로, 두번째 테이블을 조합한다.
  • ON 조건식을 만족하지 않는 경우 첫번째 테이블의 필드값을 그대로 가져온다.
  • 이때, 해당 레코드의 두번째 테이블 필드값은 모두 NULL로 표시된다.
SELECT [FIELD, ...] FROM TABLE1
LEFT JOIN TABLE2
ON 조건식

예시.

  • Reservation 테이블의 Name 필드를 기준으로 Customer 테이블의 Name 필드와 일치하는 레코드만을 LEFT JOIN으로 조회
  • 그 중에서 ReserveDate 필드의 값이 2016년 02월 01일 이후인 레코드만을 선택하는 예제
SELECT * FROM Reservation AS R
LEFT JOIN Customer AS C
ON R.Name = C.Name
WHERE R.ReserveDate > '2016-02-01';

  • Name이 일치하면 INNER JOIN과 같이 두 테이블의 모든 필드를 그대로 가져온다.
  • 그러나 Name이 일치하지 않을 경우 Customer 테이블의 모든 필드는 NULL로 표시된다.

3. RIGHT JOIN

  • LEFT JOIN과 반대로 두번째 테이블을 기준으로, 첫번째 테이블을 조합한다.
  • ON 절의 조건을 만족하지 않는 경우 두 번째 테이블의 필드값을 그대로 가져온다.
  • 그러나 해당 레코드의 첫번째 테이블의 필드값은 모두 NULL로 표시된다.
SELECT [FIELD, ...] FROM TABLE1
RIGHT JOIN TABLE2
ON 조건식

예시.

  • Customer 테이블의 Name 필드를 기준으로 Reservation 테이블의 Name 필드와 일치하는 레코드만을 RIGHT JOIN으로 조회
SELECT * FROM Reservation AS R
RIGHT JOIN Customer AS C
ON R.Name = C.Name;

  • INNER JOIN, LEFT JOIN과는 다르게 Customer 테이블 필드가 좌측에 먼저 나온 것을 볼 수 있다.
  • Name이 일치하면 모든 필드를 그대로 가져온다.
  • Name이 일치하지 않으면 Reservation 테이블의 모든 필드를 NULL로 표시한다.
profile
잘 먹고 잘살기

0개의 댓글