본문 바로가기

Database

[MySQL] JOIN문 정리

 

JOIN

  • 관계형 데이터베이스에서는 중복을 피하기 위해 데이터를 여러 테이블로 나눔
  • 분리된 테이블을 결합하여 원하는 데이터를 조회하고자 할 경우 JOIN을 사용
  • 관계를 가진 컬럼을 기준으로 데이터를 결합하여 원하는 결과물 도출

벤 다이아그램을 통해 조인문 만들어주는 사이트 : https://sql-joins.leopard.in.ua/


INNER JOIN

  • SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key [WHERE 조건]
  • 내부 조인, 둘 이상의 테이블에 존재하는 공통 컬럼의 값이 같은 것을 검색
  • 행의 값이 1:n일 경우 n개의 행을 검색
  • WHERE절을 사용하여 조건을 만족하는 행을 가져올 수 있다.
  • 대체로 INNER JOIN은 많이 사용된다.

LEFT(OUTER) JOIN

  • SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
  • 테이블 A를 기준으로 조인, 외부조인
  • 기준 테이블의 행이 모두 검색 (연결되지 않은 행은 null)

RIGHT(OUTER) JOIN

  • SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key
  • 테이블 B를 기준으로 조인, LEFT와 결과는 동일하지만 조회 순서가 다름, 외부조인

FULL OUTER JOIN

  • SELECT * FROM TableA A LEFT JOIN TableB B UNION SELECT * FROM TableA A RIGHT JOIN TableB B
  • MySQL에서는 FULL OUTER JOIN을 지원하지 않기 때문에 UNION을 통해 사용

CROSS JOIN

  • SELECT * FROM TableA A CROSS JOIN TableB B
  • 테이블 A에서 조회되는 하나의 행이 테이블 B의 모든 행에 다 연결되어 조인하는 방법
  • 테이블 A가 n개의 행을 가지고 테이블 B가 m개의 행을 가진다면 n*m개의 행이 조회