본문 바로가기
Web/Dev

[MySQL] JOIN - LEFT/RIGHT JOIN

by 09337 2022. 3. 2.

1. SQL 이란?

MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어


2. JOIN

2-1.  JOIN 정의

  • 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법
    • 연결하기 위해 테이블이 적어도 하나의 컬럼을 공유하고 있어야 한다.
    • 이때, 공유하는 컬럼을 PK 또는 FK 값으로 사용한다.

 

2-2. PK(Primary Key), FK(Foreign Key)

  • PK: 기본 키라고 하며, 엔티티를 식별하는 대표 키다. NULL일 수 없다.
  • FK: 다른 테이블의 PK를 참조하는 키다. 어떠한 테이블에서 존재하는 다른 테이블의 정보이기 때문에 왜래 키이다. 참조하고자 하는 컬럼은 PK 또는 UK이여야 한다.
  • PK와 FK는 테이블의 필수 요소로써, 모든 테이블은 이들 둘 중 하나 이상을 반드시 포함하고 있다.

 

2-3.  종류

[사진 기준] 가운데: 이너 조인 / 양측: 레프트 조인, 라이트 조인 / 아래: 아우터 조인

  • INNER JOIN: 내부 조인 → 교집합
  • LEFT/RIGHT JOIN → 부분집합
  • OUTER JOIN: 외부 조인 → 합집합
    (MYSQL은 LEFT JOIN + RIGHT JOIN로 쓰인다. OUTER JOIN은 ORACLE에 쓰인다.)

 

2-4.  LEFT JOIN 예시

SELECT <열 목록> FROM <첫 번째 테이블> LEFT JOIN <두 번째 테이블> ON <조인될 조건> WHERE <검색 조건> IS NULL

두 테이블 연결

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid

* [topic] 테이블에 [author] 테이블을 조인(연결)하는데, 이때 조건은 author_id = author.aid 이다.

  • FK(topic.author_id)가 참고하고자 하는 컬럼이 PK(author.aid)다.
  • [topic] 테이블에 join할 [author] 테이블을 가져와서 author_id 와 aid 값이 같다고 알려준다.
  • 여기서 author.aid가 PK가 되고, 그 컬럼을 참고하는 topic.author_id가 FK가 된다.
  • LEFT/RIGHT JOIN은 자기한테 존재하는 것을 모두 가져온다. 자신과 링크가 걸려있지 않는 것은 NULL로 표현하여 가져온다. Oracle에 있는 NULL은 [author] 테이블에 해당되지 않지만, NULL로 표현해서 가져온다.

 

두 테이블을 LEFT JOIN으로 연결한 결과

[topic] 테이블에 해당되는 값은 모두 가져온다.

  • NULL 값이 존재한다면, '왼쪽 테이블에는 값이 있는데 그 값에 해당되는 오른쪽 테이블에는 행이 없구나 ~~' 라고 생각하면 된다.

'Web > Dev' 카테고리의 다른 글

[MySQL] UNION, JOIN 차이  (0) 2022.03.03
[MySQL] JOIN - OUTER JOIN (LEFT+RIGHT)  (0) 2022.03.03
[MySQL] JOIN - INNER JOIN  (0) 2022.03.02
[MySQL] SUM, MAX, MIN  (0) 2022.02.27
PHP Mysql 게시판 만들기 - 1  (1) 2021.03.25

댓글