본문 바로가기
Web/Dev

[MySQL] JOIN - INNER 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.  INNER JOIN 예시

  • 두 테이블을 연결할 때 가장 많이 사용된다.

  • 두 테이블에서 공통되는 값만 뽑아오기 때문에 NULL 행이 존재하지 않는다.
SELECT <열 목록> FROM <첫 번째 테이블> INNER JOIN <두 번째 테이블> ON <조인될 조건>
# INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.

두 테이블 연결

SELECT * FROM topic INNER 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_idaid 값이 같다고 알려준다.
  • 여기서 author.aidPK가 되고, 그 컬럼을 참고하는 topic.author_idFK가 된다.
  • 이때, [topic] 테이블에 있는 OracleNULL값이기 때문에 가져오지 않고, [author] 테이블에 있는 blackdew는 [topic] 테이블에 존재하지 않으므로 데이터를 갖고 오지 않는다.

 

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

각 테이블에서 공통되는 값으로만 이루어진 것을 확인할 수 있다.

 

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

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

댓글