개발지식 먹는 하마 님의 블로그

SQL 문법 - 조인 본문

MySQL

SQL 문법 - 조인

devhippo 2025. 1. 16. 16:02

[ JOIN ]

여러 개의 테이블을 연결하여 데이터를 검색하는 방법이다.
필요한 데이터가 서로 다른 테이블에 있을 때 불러오기 위해서 사용한다.
조인에는 대표적으로 6개의 유형이 있다.

유형 이미지 설명
INNER
공통 컬럼의 값이 같은 경우를 추출한다.
LEFT
(OUTER) JOIN
왼쪽 테이블의 모든 데이터와
오른쪽 테이블의 동일 데이터를 추출한다.


WHERE 검색조건을 추가할 경우,
조인된 값에서 해당 조건에 맞는 결과만 출력된다.







* WHERE B.key IS NULL을 했을 때, 차집합 형태의 결과가 나오는 이유
왼쪽 테이블의 모든 데이터가 들어가있기 때문에
A.key = B.key를 했을 때, B.key가 비어있는 데이터가 존재할 수 있다.

ex) A.key : 1, 2, 5 / B.key : 1, 2, 3 일 때,
      1, 2, 5가 조회되고 5의 B.key는 비어있다.

따라서 IS NULL로 비어있는 데이터만을 조회했기 때문에
차집합 형태의 결과가 나온다.

RIGHT
(OUTER) JOIN
  오른쪽 테이블의 모든 데이터와
왼쪽 테이블의 동일 데이터를 추출한다.
FULL
(OUTER) JOIN
양쪽의 모든 데이터를 추출한다.
CROSS JOIN
모든 데이터 조합을 추출한다.
(공통된 데이터를 출력하는 것이 아니다!)

CROSS JOIN의 결과 
= A 테이블 행 개수 X B 테이블 행 개수
SELF JOIN   자기 자신에게 별칭을 지정한 후 다시 조인한다.

SELECT *
FROM table1 A JOIN table1 B
ON A.key = B.key;

이미지 출처 : https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/

[ 집합 연산자 ]

여러 SELECT 문의 결과를 하나로 결합하기 위해 사용한다.

< 사용 조건 >

  • SELECT 절의 컬럼 수가 동일해야한다.
  • SELECT 절의 동일한 위치에 존재하는 컬럼의 데이터 타입이 상호 호환 가능해야 한다.
집합 연산자 설명
UNION 합집합 (중복 X)
중복 행이 제거된 쿼리 결과를 반환한다.
UNION ALL 합집합 (중복 O)
중복 행이 제거되지 않은 쿼리 결과를 반환한다.
INTERSECT 교집합
두 쿼리 결과에 공통적으로 존재하는 결과를 반환한다.
MINUS 차집합
첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환한다.

 

'MySQL' 카테고리의 다른 글

SQL - 피벗 테이블  (0) 2025.01.17
SQL 문법 - 서브쿼리, CTEs  (0) 2025.01.16
SQL 문법 - 조건  (0) 2025.01.15
SQL 문법 - 문자열  (0) 2025.01.15
MySQL 스타일 가이드  (0) 2025.01.14