본문 바로가기
Language/SQL

[SQL] JOIN 정리 (MySQL)

by SooooooooS 2024. 1. 14.
728x90

※ 문제 풀이를 하면서 SQL 복습 정리 ※

📖  참고 및 공식문서

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

 

SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)

조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부

hongong.hanbit.co.kr

 

https://dev.mysql.com/doc/refman/8.0/en/join.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.13.2 JOIN Clause

MySQL supports the following JOIN syntax for the table_references part of SELECT statements and multiple-table DELETE and UPDATE statements: table_references: escaped_table_reference [, escaped_table_reference] ... escaped_table_reference: { table_referenc

dev.mysql.com


📌 JOIN 이란?
데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현
즉, 두 릴레이션으로부터 관련된 투플들을 결합하여 하나의 보다 긴 투플로 만든다.
외래키(Foreign Key)와 기본키(Primary Key)를 사용하여 두 테이블을 연결한다.

 

JOIN 예시 테이블

1️⃣  INNER JOIN (내부 조인)

  • 여러 애플리케이션에서 사용되는 가장 흔한 결합 방식이며, 기본 조인 형식
  • INNER JOIN = JOIN 연산과 같다.
  •  조인하려는 양쪽테이블에 모두 값이 있는 경우만 출력된다.
  • 즉, 서로 중복된 값만 출력한다.

INNER JOIN 결과

SELECT *
FROM A 
	JOIN B
    ON A.id = B.id
WHERE [조건절];

2️⃣ OUTER JOIN (외부 조인)

  • 한쪽 테이블에만 값이 있어도 결과가 출력된다.
  • LEFT : 왼쪽 테이블을 기준으로 오른쪽 테이블을 매칭, 없는 경우 NULL로 표시
  • RIGHT : 오른쪽 테이블을 기준으로 왼쪽 테이블을 매칭, 없는 경우 NULL로 표시
  • FULL : 모든 테이블의 데이터를 매칭, 없는 경우 NULL

OUTER JOIN 결과

Left Outer Join

SELECT *
FROM A 
	LEFT JOIN B
    ON A.id = B.id;

 

Right Outer Join

SELECT *
FROM A
	RIGHT JOIN B
    ON A.id = B.id;

 

Full Outer Join = LEFT + RIGHT

SELECT *
FROM A
	LEFT JOIN B
    ON A.id = B.id

UNION

SELECT *
FROM A
	RIGHT JOIN B
    ON A.id = B.id

3️⃣ CROSS JOIN (교차 조인)

  • 조인되는 두 테이블의 곱집합을 구한다.
  • m행을 가진 테이블과 n행을 가진 테이블이 교차 조인되면 m*n 개의 행을 생성

곱집합

SELECT *
FROM A CROSS JOIN B;
728x90