[MySQL] MySQL 테이블 조인(Inner Join, Outer[Left, Right] Join)

2021. 5. 12. 10:20·코딩테스트/DB
반응형

조인이란?

두개 이상의 테이블을 결합하여 데이터를 출력하는 방법.
보통 Primary key혹은 Foreign key로 두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야합니다.

-> 두개의 다른 테이블에서 ON 조건절을 통해 만들어진 컬럼과 두개의 테이블이 별칭을 통해 생성된 컬럼이 있는 하나의 테이블을 상상하시면 쉽게 이해가 되실겁니다.

Inner Join

한국말로는 내부조인이라고도 말을 하며 JOIN 조건에서 동일한 값이 있는 행만을 출력합니다. INNER JOIN 은 WHERE 절에서 사용하던 JOIN 조건을 FROM 절에서 정의하겠다는 의미이므로 USING 이나 ON 절을 필수적으로 사용해야 합니다.

 

INNER JOIN

 

Left Outer Join

A테이블을 기준으로 조인하고 싶을 경우 사용합니다. A의 레코드는 무조건 출력이 될 것이고, B의 데이터 같은 경우 매칭 되는 값이 없을 경우 NULL이 출력됩니다.

 

LEFT JOIN

 

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A LEFT OUTER JOIN ANIMAL_OUTS B 
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME ASC

Right Outer Join

B테이블을 기준으로 조인하고 싶을 경우 사용합니다. B의 레코드는 무조건 출력이 될 것이고, A의 데이터 같은 경우 매칭 되는 값이 없을 경우 NULL이 출력됩니다.

 

RIGHT JOIN

 

SELECT B.ANIMAL_ID AS ANIMAL_ID, B.NAME AS NAME
FROM ANIMAL_INS A RIGHT OUTER JOIN ANIMAL_OUTS B 
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.NAME IS NULL AND B.NAME IS NOT NULL

해석

A테이블과 B테이블을 B테이블의 ID 기준으로 채우며 조인 시킨 후, 조인시켰을 때 A의 NAME이 NULL이고 B의 NAME이 NULL이 아닌 것 중 B테이블의 ANIMAL_ID와 B테이블의 NAME을 출력

 

 

반응형
'코딩테스트/DB' 카테고리의 다른 글
  • [MySQL] 프로그래머스 입양 시각 구하기(2) (SET, WITH RECURSIVE)
  • [MySQL] DATETIME 날짜 차이 구하기(DATEDIFF 함수)
  • [MySQL] MySQL IF, Case 조건 (프로그래머스 중성화 여부 파악하기)
  • [MySQL] 컬럼의 최소 값, 최대값 가져오기(min, max 함수, 서브쿼리)
seunghwaan
seunghwaan
공부한 내용을 정리하는 개발 기록 블로그
  • seunghwaan
    SH's Devlog
    seunghwaan
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • Android (62)
        • Basic (17)
        • Kotlin(Java) (14)
        • UI & Animation (1)
        • Compose (2)
        • Coroutines (1)
        • Dependency Injection (6)
        • RxJava (8)
        • BLE (3)
        • TDD (2)
        • JetPack (1)
        • NextStep (4)
        • Error Log (3)
      • Flutter (14)
        • Basic (5)
        • Dart (1)
        • State Management (2)
        • Widgets (4)
        • Error and Tips (2)
      • CS(Computer Science) (18)
        • Network (4)
        • Database (10)
        • Design Pattern (1)
        • Computer Architecture (3)
        • Operating System (0)
      • iOS (8)
        • Basic (0)
        • Swift (8)
      • Cloud (6)
        • AWS (6)
      • Web Frontend (0)
        • JavaScript(TS) (0)
        • React (0)
      • DevOps (25)
        • GIT (4)
        • CI CD (8)
        • Linux (4)
        • Docker (9)
        • Error Log (0)
      • 코딩테스트 (10)
        • DB (6)
        • 알고리즘 (4)
      • Backend (1)
        • Spring (1)
      • Mac Tip (0)
      • Temporary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컴퓨터공학
    Dependency Injection
    Network
    상태 관리
    Swift
    Dagger
    FLUTTER
    cd
    IOS
    di
    cs
    Computer Science
    gradle
    Kotlin
    RxJava
    Android
    시작하세요! 도커
    Jenkins
    네트워크
    database
    docker
    BLE
    CI
    Algorithm
    Linux
    cognito
    MySQL
    CICD
    error
    AWS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
seunghwaan
[MySQL] MySQL 테이블 조인(Inner Join, Outer[Left, Right] Join)
상단으로

티스토리툴바