본문 바로가기
DBMS

[JOIN] JOIN문

by amoomar 2025. 1. 9.
반응형

이미지 출처: https://sowon-dev.github.io/2020/07/09/200710dbi2/

해당 게시글에서는 JOIN문을 이해할 수 있도록 간단히 정리해보았다. 주로 사용되는 분류만을 다루었기 때문에 생략된 JOIN의 종류가 있음을 미리 알린다.

 

목차

     

     

     


     

    JOIN?

    두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법으로, 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다.

     

     

    1. INNER JOIN(내부 조인)

    INNER 조인은 일반적인 JOIN의 기본 형태로, 두 테이블 간의 교집합을 반환하며 매칭 조건(*ON 절 또는 *USING 절)에 부합하는 행만 결과로 포함한다.

    -- ['INNER' 생략 가능]
    
    -- ON절
    -- 컬럼 이름이 달라도 사용 가능
    -- OR, AND 등 복잡한 조건 사용 가능
    SELECT A.id, A.name, B.age
    FROM A
    INNER JOIN B
    ON A.id = B.USER_id;
    
    -- USING절
    -- 각 테이블의 동일한 이름의 컬럼만 사용 가능
    -- 때문에 비교적 간단해보임
    SELECT *
    FROM Employees
    JOIN Departments
    USING (dept_id);

     

     

     

     

    2. OUTER JOIN(외부 조인)

    Inner Join 과 다르게 공통되지 않은 행도 유지한다.

    • 이때 두 테이블 모두의 값을 유지하면 Full Outer Join
    • 왼쪽 테이블 값만 유지하면 Left Outer Join
    • 오른쪽 테이블 값만 유지하면 Right Outer Join

    * MySQL에서는 FULL OUTER JOIN을 지원하지 않으므로 LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN결과를 UNION 하여 사용해야 함

     

    1) FULL OUTER JOIN

     

    두 테이블의 모든 데이터를 포함하며, 아래와 같이 매칭되지 않는 데이터는 NULL로 채워진다.

    -- 합집합 형태
    SELECT *
    FROM instructor
    FULL OUTER JOIN teaches 
    ON instructor.id = teaches.id

     

     

     

    이때, 대칭차 형태(교집합이 아닌 부분만 조회)로 조건을 걸고 싶다면 쿼리 조건을 아래와 같이 수정하면 된다.

    -- 대칭차 형태
    SELECT *
    FROM instructor
    FULL OUTER JOIN teaches 
    ON instructor.id = teaches.id
    WHERE instructor.id IS NULL
    OR teaches.id IS NULL
    
    -- instructor에만 있는 데이터
    SELECT *
    FROM instructor
    FULL OUTER JOIN teaches 
    ON instructor.id = teaches.id
    WHERE teaches.id IS NULL
    
    -- teaches에만 있는 데이터
    SELECT *
    FROM instructor
    FULL OUTER JOIN teaches 
    ON instructor.id = teaches.id
    WHERE instructor.id IS NULL

     

     

     

     

    2) LEFT (OUTER) JOIN

     

    왼쪽(먼저 선언된) 테이블을 기준으로 하여 공통된 데이터를 제공하는 조인이다.

    SELECT 조회할 컬럼
    FROM 기준테이블1 
    LEFT OUTER JOIN 테이블2
    ON 조건문
    [WHERE 추가조건문]

     

     

     

     

    3) RIGHT (OUTER) JOIN

    우측(나중에 선언된) 테이블을 기준으로 하여 공통된 데이터를 제공하는 조인이다.

    SELECT 조회할 컬럼
    FROM 테이블1 
    RIGHT OUTER JOIN 기준테이블2
    ON 조건문
    [WHERE 추가조건문]

     

     

     

     

     

    3. CROSS JOIN

     

    두 테이블 데이터의 모든 조합(곱집합)을 조회할 수 있는 JOIN문 종류이다.

    • 테이블1의 row * 테이블2의 row 개수만큼의 row를 가진 테이블 생성

    -- 아래 3 문장 모두 동일한 결과를 반환함
    
    --1)
    SELECT 조회할컬럼
    FROM 테이블1, 테이블2
    
    --2)
    SELECT 조회할컬럼
    FROM 테이블1
    JOIN 테이블2
    
    --3)
    SELECT 조회할컬럼
    FROM 테이블1
    CROSS JOIN 테이블2

     

     

     

     


     

    해당 게시물 작성에 참고한 포스팅의 링크를 아래 참조하였다.

    https://doh-an.tistory.com/30

     

    [DB] SQL - JOIN문, JOIN 종류 (Inner Join,Natural Join,Outer Join,Cross Join)

    1. Join이란? 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다. 2. 기본 구조 1) 일반 SELECT 테이블.컬럼, 테이블.컬

    doh-an.tistory.com

     

    https://learn.microsoft.com/ko-kr/power-query/merge-queries-left-anti

     

    왼쪽 안티 조인 - Power Query

    왼쪽 조인 방지 종류를 사용하여 파워 쿼리에서 병합 작업을 수행하는 방법에 대한 문서입니다.

    learn.microsoft.com

     

    반응형

    'DBMS' 카테고리의 다른 글

    [ORACLE/TIBERO] 데이터 복구  (0) 2022.11.28
    [TIBERO] TBstudio 설치하기 :TBadmin  (0) 2022.09.16
    [ORACLE/TIBERO] 함수  (0) 2022.08.18
    [DBeaver] Tibero 연결  (0) 2022.07.05
    [MySQL] 설치 & 이관작업  (0) 2022.02.03