[SQL] : JOIN - INNER JOIN

김대현·2024년 6월 8일

(1) JOIN
(2) JOIN - INNER JOIN 문법


(1) JOIN

  • JOIN은 관계형 데이터베이스를 다루는 SQL 에서 두 개 이상의 테이블 간의 데이터를 결합하여 새로운 결과 집합을 생성하는 데 사용되는 연산자이다. 즉, JOIN을 사용하면 서로 다른 테이블에 저장된 데이터를 연관시켜서 필요한 정보를 한 번에 조회하거나 가져오는 것이 가능하다.



(2) JOIN - INNER JOIN 문법

#실습데이터1
+----+--------+------------+-----+-----+---------------+-------------------+
| ID | NAME  | BIRTHDAY   | AGE | SEX | JOB_TITLE    | AGENCY            |
+----+--------+------------+-----+-----+---------------+-------------------+
|  1 | 아이유 | 1993-05-16 |  29 | F   | 가수, 탤런트   | EDAM엔터테인먼트    |
|  2 | 이미주 | 1994-09-23 |  28 | F   | 가수          | 울림엔터테인먼트     |
|  3 | 송강   | 1994-04-23 |  28 | M   | 탤런트        | 나무엑터스          |
|  4 | 강동원 | 1981-01-18 |  41 | M   | 영화배우, 탤런트| YG엔터테인먼트      |
|  5 | 유재석 | 1972-08-14 |  50 | M   | MC, 개그맨    | 안테나              |
|  6 | 차승원 | 1970-06-07 |  48 | M   | 영화배우, 모델 | YG엔터테인먼트       |
|  7 | 이수현 | 1999-05-04 |  23 | F   | 가수          | YG엔터테인먼트       |
+----+--------+------------+-----+-----+---------------+-------------------+
7 rows in set (0.00 sec)

#실습데이터2
+----+--------+---------+----------------+---------+
| ID | SEASON | EPISODE | BROADCAST_DATE | HOST    |
+----+--------+---------+----------------+---------+
|  1 |     8  |       7 | 2020-09-05     | 강동원   |
|  2 |     8  |       8 | 2020-09-12     | 유재석   |
|  3 |     8  |       9 | 2020-09-19     | 차승원   |
|  4 |     8  |      10 | 2020-09-26     | 이수현   |
|  5 |     9  |       1 | 2021-09-04     | 이병헌   |
|  6 |     9  |       2 | 2021-09-11     | 하지원   |
|  7 |     9  |       3 | 2021-09-18     | 제시     |
|  8 |     9  |       4 | 2021-09-25     | 조정석   |
|  9 |     9  |       5 | 2021-10-02     | 조여정   |
| 10 |     9  |       6 | 2021-10-09     | 옥주현   |
+----+--------+---------+----------------+---------+
10 rows in set (0.00 sec)

🖍️ INNERJOIN (두 테이블 간의 교집합을 반환)

  • INNER JOIN은 두 개의 테이블 간에 교차하는 데이터만을 반환하는 JOIN 유형이다. 즉, 두 테이블 사이에 공통된 요소들을 결합해 조인하여 교집합이라고 할 수 있는 공통된 값을 출력 결과에 포함하는 것이다.
#INNERJOIN (두 테이블 간의 교집합을 반환)
SELECT column1, co1umn2,FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
#예시, snl_show 테이블에 호스트로 출연한 celeb 테이블을 기준으로 celeb 테이블과 snl_show 테이블을 INNER JOIN 

mysql> SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
    -> FROM celeb INNER JOIN snl_show ON celeb.name = snl_show.host;
+----+--------+----+---------+
| id | name   | id | host    |
+----+--------+----+---------+
|  4 | 강동원 |  1 | 강동원    |
|  5 | 유재석 |  2 | 유재석    |
|  6 | 차승원 |  3 | 차승원    |
|  7 | 강동원 |  4 | 이수현    |
+----+--------+----+---------+
4 rows in set (0.00 sec)

  • FROM tableA INNER JOIN tableB: FROM 은 쿼리의 대상이 되는 테이블을 지정한다.

  • INNER JOIN 은 두 개의 테이블 (tableA와 tableB) 을 결합하는 방법을 지정한다.
    tableA가 기준이 되어서 tableBINNER JOIN 하여 교차하는 데이터에 해당하는 column1, co1umn2 만을 반환하여 조회하는 것이다.

  • ON tableA.column = tableB.column: ON 은 결합할 때 사용할 JOIN 조건을 지정한다. 즉 두 테이블을 연결할 공통된 교집합인지 확인하기 위한 열(column)을 지정하는 것이다. 그래서 tableAtableB의 특정 열(column) 값이 공통되어 교집합을 형성할 수 있게 두 값이 일치하는 경우에만 행이 결합되어 출력이 가능하다.

profile
데이터 분석 스쿨 블로그 입니다.

0개의 댓글