sanguk.dev
작성완료
MySQL JOIN

MySQL JOIN

JOIN은 여러 테이블의 레코드를 조합하여 결과 집합을 생성하며, INNER JOIN, LEFT JOIN, RIGHT JOIN의 세 가지 주요 유형이 있다. INNER JOIN은 조건에 맞지 않는 레코드를 제외하고, LEFT JOIN은 첫 번째 테이블 기준으로 조합하며 조건에 맞지 않는 필드는 NULL로 표시된다. RIGHT JOIN은 두 번째 테이블 기준으로 조합하며, 마찬가지로 조건에 맞지 않는 필드는 NULL로 나타난다.

MySQL

JOIN

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

특징

  1. JOIN은 보통 SELECT 문과 함께 자주 사용된다.
  2. JOIN은 ON절과 함께 사용되며, ON절의 조건을 만족하는 데이터만 가져온다.
  3. ON 절에서는 WHERE 절에서 사용할 수 있는 모든 조건을 사용할 수 있다.
  4. 표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용된다.

문법

sql
SELECT *
FROM 첫 번째 테이블
[INNER | LEFT | RIGHT] JOIN 두 번째 테이블
ON 조건

종류

  1. INNER JOIN
  2. LEFT JOIN
  3. RIGHT JOIN
    tb_user 테이블
IDNAMEAGEADDR_ID
1홍길동261
2홍길순243
3홍길동317
4유관순278

tb_addr 테이블

IDADDR
1서울
2부산
3인천
4광주
5울산
6대구
7대전

INNER JOIN

sql
SELECT tb_user.NAME, tb_addr.ADDR
FROM tb_user
INNER JOIN tb_addr
ON tb_user.ADDR_ID = tb_addr.ID
NAMEADDR
홍길동서울
김유신인천
이순신대전

위 결과와 같이 INNER JOIN은 ON절의 조건에 맞지 않는 레코드는 아예 나오지 않는다.


LEFT JOIN

LEFT JOIN은 첫 번째 테이블을 기준으로, 두 번째 테이블을 조합하는 JOIN이다.

sql
SELECT tb_user.NAME, tb_addr.ADDR
FROM tb_user
LEFT JOIN tb_addr
ON tb_user.ADDR_ID = tb_addr.ID
NAMEADDR
홍길동서울
김유신인천
이순신대전
유관순NULL

위 결과와 같이 LEFT JOIN은 ON절의 조건에 맞지 않는 필드의 값은 NULL이다.


RIGHT JOIN

RIGHT JOIN은 두 번째 테이블을 기준으로, 첫 번째 테이블을 조합하는 JOIN이다.

sql
SELECT tb_user.NAME, tb_addr.ADDR
FROM tb_user
RIGHT JOIN tb_addr
ON tb_user.ADDR_ID = tb_addr.ID
NAMEADDR
홍길동서울
김유신인천
이순신대전
유관순NULL

위 결과와 같이 RIGHT JOIN은 ON절의 조건에 맞지 않는 필드의 값은 NULL이다.