DB, SQL

MySQL JOIN

index.ys 2023. 10. 3. 19:54

JOIN

  • 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
  • 두개 이상의 테이블을 묶어서 조인 할 수도 있음

내부 조인

  • 두 테이블을 연결할 때 가장 많이 사용됨
  • 그냥 JOIN을 INNER JOIN을 의미함

 1:N 관계

  • 두개의 테이블을 조인하기 위해서는 일대다( One to Many)관계로 연결 되어야함
  • 한쪽 테이블에는 1개의 값만 존재하지만 연결된 다른 테이블에는 여러개의 값이 존재할 수 있음
  • EX) 회원 테이블의 회원정보는 각자의 고유한 회원의 정보를 담고있음 => 1 구매 테이블의 구매정보는 한명의 구매기록이 여러번 존재할 수 있기때문에 => N
  • 기본키(PK)와 외래키(FK)관계로 맺어져 있음

문법

  • 두개의 테이블에서 모두 존재하는 행을 반환함
SELECT 컬럼
FROM 첫번째 테이블
INNER JOIN 두번째 테이블
ON 조인될 조건;

외부 조인

LEFT JOIN

  • 내부 조인과 다르게 한쪽에만 데이터가 있어도 결과를 출력함
  • 오른쪽 테이블에 빈값 발생시 NULL로 컬럼을 채움
  • LEFT OUTER JOIN (LEFT JOIN)은 왼쪽테이블의 내용은 모두 출력되어야함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;

RIGHT JOIN

  • LEFT조인과 동일함, 오른쪽에 있는 테이블을 기준으로 테이블을 조인함
  • RIGHT OUTER JOIN( RIGHT JOIN )은 오른쪽테이블의 내용은 모두 출력되어야함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;

FULL OUTER JOIN

  • LEFT조인과 RIGHT 조인을 합친것
  • 왼쪽 테이블이나 오른쪽 테이블 둘중 한 테이블에 존재하기만해도 데이터를 출력함
SELECT *
FROM 테이블1 //기준이 되는 테이블 (왼쪽 테이블)
LEFT | RIGHT | FULL JOIN 테이블2
ON 테이블1.열 = 테이블2.열;

상호 조인

  • CROSS JOIN은 한쪽테이블의 모든행과 다른 쪽 테이블의 모든행을 조인 시키는 조인
  • 테이블1 행 갯수 X 테이블2 행 갯수 = 조인결과 행 갯수
  • 상호 조인을 카티션 곱이라고도 함
  • ON 구문을 사용할 수 없다
  • 테스트용 데이터나 대용량 데이터를 생성할 떄 사용
SELECT *
FROM 테이블1
CROSS JOIN 테이블2;

자체 조인

  • SELF JOIN은 자신이 자신과 조인하는 JOIN방법, 1개의 테이블만 사용함
  • INNER JOIN과 문법이 똑같지만 1개의 테이블만 사용함
SELECT 컬럼
FROM 첫번째 테이블
INNER JOIN 첫번째 테이블
ON 조인될 조건;