여러 테이블의 정보를 한 번에 조회할 수 없을까?

데이터베이스 내의 여러 테이블을 하나의 테이블이나 결과 집합으로 표현하기 위해서 사용하는 것이 JOIN 이다.

표준 SQL에서는 레코드를 조합하는 방식에 따라 JOIN을 다음과 같이 구분한다.

  1. INNER JOIN

  2. LEFT JOIN

  3. RIGHT JOIN

INNER JOIN

INNER JOIN은 ON 절과 함께 사용되며, ON 절의 조건을 만족하는 데이터만을 가져온다.

SELECT 필드이름
FROM 테이블이름
[INNER] JOIN 두번째테이블이름
ON 조건
  • rental 테이블과 user 테이블의 정보 중 user_id가 같은 것끼리 연결

    SELECT * 
    FROM rental
    [INNER] JOIN customer
    ON customer.id = rental.user_id;
    
    customer 테이블
    id name email
    1 chanhwan choich@shimlog.com
    2 haesol sunsol@shimlog.com
    3 jaewoon jaejae@shimlog.com
    rental 테이블
    rental_id user_id book_id
    1 1 1000
    2 1 1001
    3 3 1004

    customer, rental join 테이블

    rental_id name email
    1 chanhwan choich@shimlog.com
    2 Chanhwan choich@shimlog.com
    3 Jaewoon jaejae@shimlog.com

LEFT JOIN

SELECT 필드이름
FROM 테이블이름
LEFT JOIN 두번째테이블이름
ON 조건
  • rental 테이블과 user 테이블의 정보 중 user_id가 같은 것끼리 연결

    SELECT * 
    FROM rental
    LEFT JOIN customer
    ON customer.id = rental.user_id;
    
    customer 테이블
    id name email
    1 chanhwan choich@shimlog.com
    2 haesol sunsol@shimlog.com
    3 jaewoon jaejae@shimlog.com
    rental 테이블
    rental_id user_id book_id
    1 1 1000
    2 1 1001
    3 3 1004

    customer, rental join 테이블

    rental_id name email rental_id Book_id
    1 chanhwan choich@shimlog.com 1 1000
    2 chanhwan choich@shimlog.com 2 1001
    2 haesol haesol@shimlog.com null null
    3 jaewoon jaejae@shimlog.com 3 1004

RIGHT JOIN

INNER JOIN은 ON 절과 함께 사용되며, ON 절의 조건을 만족하는 데이터만을 가져온다.

SELECT 필드이름
FROM 테이블이름
RIGHT JOIN 두번째테이블이름
ON 조건
  • rental 테이블과 user 테이블의 정보 중 user_id가 같은 것끼리 연결

    SELECT * 
    FROM rental
    RIGHT JOIN customer
    ON customer.id = rental.user_id;
    
    customer 테이블
    id name email
    1 chanhwan choich@shimlog.com
    2 haesol sunsol@shimlog.com
    3 jaewoon jaejae@shimlog.com
    rental 테이블
    rental_id user_id book_id
    1 1 1000
    2 1 1001
    3 4 1004

    customer, rental join 테이블

    id name email rental_id book_id
    1 chanhwan choich@shimlog.com 1 1000
    1 chanhwan choich@shimlog.com 2 1001
    null null null 4 1004

정리

image-20211031162519323

댓글남기기