(1) JOIN
(2) JOIN - INNER JOIN 문법
JOIN은 관계형 데이터베이스를 다루는 SQL 에서 두 개 이상의 테이블 간의 데이터를 결합하여 새로운 결과 집합을 생성하는 데 사용되는 연산자이다. 즉, 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가 기준이 되어서 tableB를 INNER JOIN 하여 교차하는 데이터에 해당하는 column1, co1umn2 만을 반환하여 조회하는 것이다.
ON tableA.column = tableB.column: ON 은 결합할 때 사용할 JOIN 조건을 지정한다. 즉 두 테이블을 연결할 공통된 교집합인지 확인하기 위한 열(column)을 지정하는 것이다. 그래서 tableA와 tableB의 특정 열(column) 값이 공통되어 교집합을 형성할 수 있게 두 값이 일치하는 경우에만 행이 결합되어 출력이 가능하다.