SQL JOIN

해연·2023년 6월 11일
0

데이터베이스

목록 보기
7/14

두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법

  • 두 테이블을 조인하기 위해서는 기본키(primary key)와 외래키(foreign key) 관계로 맺어져야 함

INNER JOIN

두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.

SELECT < 목록>
FROM < 번째 테이블>
    INNER JOIN < 번째 테이블>
    ON <조인 조건>
[WHERE 검색 조건]

#INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다.
  • ex)
    A 테이블에는 아이디,이름 존재 / B 테이블에는 아이디,닉네임 존재
SELECT A.ID, A.NAME, A.NICKNAME
FROM A INNER JOIN B
ON A.ID = B.ID

OUTER JOIN

두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.

SELECT < 목록>
FROM < 번째 테이블(LEFT 테이블)>
    <LEFT | RIGHT | FULL> OUTER JOIN < 번째 테이블(RIGHT 테이블)>
     ON <조인 조건>
[WHERE 검색 조건]

LEFT OUTER JOIN

  • 왼쪽 테이블 값 모두 출력(B 테이블과의 교집합 포함)
SELECT A.ID, A.NAME, A.NICKNAME
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID
  • 왼쪽 테이블 값만 출력(B 테이블과의 교집합 불포함)
SELECT A.ID, A.NAME, A.NICKNAME
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID
WHERE B.ID IS NULL

RIGHT OUTER JOIN

  • 오른쪽 테이블 값 모두 출력 (LEFT와 동일)

FULL OUTER JOIN

  • 전체 테이블 값 모두 출력
SELECT A.ID, A.NAME, A.NICKNAME
FROM A FULL OUTER JOIN B
ON A.ID = B.ID
  • 전체 테이블 값에서 교집합을 뺀 값 출력
SELECT A.ID, A.NAME, A.NICKNAME
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID
WHERE A.ID IS NULL OR B.ID IS NULL


CROSS JOIN

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능이다. 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 된다. 카티션 곱(CARTESIAN PRODUCT)이고 하고 모든 경우의 수를 표현하는 방법이다.

SELECT *
FROM < 번째 테이블>
    CROSS JOIN < 번째 테이블>

SELF JOIN

자기 자신과 자기 자신을 조인한다. 자신이 갖고 있는 칼럼을 다양하게 변형시켜 활용할 때 자주 사용한다.

SELECT < 목록>
FROM <테이블> 별칭A
    INNER JOIN <테이블> 별칭B
[WHERE 검색 조건]


출처

profile
물음표를 느낌표로 바꾸며 성장하는 예비 백엔드 개발자입니다.

0개의 댓글