• INNER JOIN
• FULL OUTER JOIN
• LEFT JOIN
• RIGHT JOIN

SELECT column1, column2, ... FROM tableA INNER JOIN tableB ON tableA.column = tableB.column --(기준 제시) WHERE condition;
• snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 INNER JOIN
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 | 이수현 | +----+--------+----+--------+

SELECT column1, column2, ... FROM tableA --left table LEFT JOIN tableB --right table ON tableA.column = tableB.column --(기준 제시) WHERE condition;
• snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 LEFT JOIN
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host FROM celeb LEFT JOIN snl_show ON celeb.name = snl_show.host; +----+--------+------+--------+ | id | name | id | host | +----+--------+------+--------+ | 1 | 아이유 | NULL | NULL | | 2 | 이미주 | NULL | NULL | | 3 | 송강 | NULL | NULL | | 4 | 강동원 | 1 | 강동원 | | 5 | 유재석 | 2 | 유재석 | | 6 | 차승원 | 3 | 차승원 | | 7 | 이수현 | 4 | 이수현 | +----+--------+------+--------+

SELECT column1, column2, ... FROM tableA --left table RIGHT JOIN tableB --right table ON tableA.column = tableB.column --(기준 제시) WHERE condition;
• snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 RIGHT JOIN
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host FROM celeb RIGHT JOIN snl_show ON celeb.name = snl_show.host; +------+--------+----+--------+ | id | name | id | host | +------+--------+----+--------+ | 4 | 강동원 | 1 | 강동원 | | 5 | 유재석 | 2 | 유재석 | | 6 | 차승원 | 3 | 차승원 | | 7 | 이수현 | 4 | 이수현 | | NULL | NULL | 5 | 이병헌 | | NULL | NULL | 6 | 하지원 | | NULL | NULL | 7 | 제시 | | NULL | NULL | 8 | 조정석 | | NULL | NULL | 9 | 조여정 | | NULL | NULL | 10 | 옥주현 | +------+--------+----+--------+

SELECT column1, column2, ... FROM tableA FULL OUTER JOIN tableB ON tableA.column = tableB.column --(기준 제시) WHERE condition;
SELECT column1, column2, ... FROM tableA LEFT JOIN tableB ON tableA.column = tableB.column UNION SELECT column1, column2, ... FROM tableA RIGHT JOIN tableB ON tableA.column = tableB.column WHERE condition;
• snl_show에 호스트로 출연한 celeb 테이블과 snl_show 테이블을 FULL OUTER JOIN
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host FROM celeb LEFT JOIN snl_show ON celeb.name = snl_show.host UNION SELECT celeb.id, celeb.name, snl_show.id, snl_show.host FROM celeb RIGHT JOIN snl_show ON celeb.name = snl_show.host; +------+--------+------+--------+ | id | name | id | host | +------+--------+------+--------+ | 1 | 아이유 | NULL | NULL | | 2 | 이미주 | NULL | NULL | | 3 | 송강 | NULL | NULL | | 4 | 강동원 | 1 | 강동원 | | 5 | 유재석 | 2 | 유재석 | | 6 | 차승원 | 3 | 차승원 | | 7 | 이수현 | 4 | 이수현 | | NULL | NULL | 5 | 이병헌 | | NULL | NULL | 6 | 하지원 | | NULL | NULL | 7 | 제시 | | NULL | NULL | 8 | 조정석 | | NULL | NULL | 9 | 조여정 | | NULL | NULL | 10 | 옥주현 | +------+--------+------+--------+
SELECT column1, column2, ... FROM tableA, tableB WHERE condition;
• [예제 1] snl_show 에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 SELF JOIN
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host FROM celeb, snl_show WHERE celeb.name = snl_show.host; +----+--------+----+--------+ | id | name | id | host | +----+--------+----+--------+ | 4 | 강동원 | 1 | 강동원 | | 5 | 유재석 | 2 | 유재석 | | 6 | 차승원 | 3 | 차승원 | | 7 | 이수현 | 4 | 이수현 | +----+--------+----+--------+
• [예제 2] snl_show 에 출연한 연예인의 snl_show 아이디, 시즌, 에피소드, 이름, 직업 정보를 검색
🍀 case 1. 칼럼명 앞에 테이블명 명시
SELECT snl_show.id, snl_show.season, snl_show.episode, celeb.name, celeb.job_title FROM celeb, snl_show WHERE celeb.name = snl_show.host; +----+--------+---------+--------+-----------+ | id | season | episode | name | job_title | +----+--------+---------+--------+-----------+ | 1 | 8 | 7 | 강동원 | 배우 | | 2 | 8 | 8 | 유재석 | 개그맨,MC | | 3 | 8 | 9 | 차승원 | 배우 | | 4 | 8 | 10 | 이수현 | 가수 | +----+--------+---------+--------+-----------+
🍀 case 2. 칼럼명만 명시 (❗에러 - 동일한 칼럼명을 두 테이블 모두 가지고 있는 경우 )
SELECT id, season, episode, name, job_title FROM celeb, snl_show WHERE name = host; ERROR 1052 (23000): Column 'id' in field list is ambiguous
🍀 case 3. 동일한 컬럼명이 존재하는 경우에만 테이블명을 명시
SELECT snl_show.id, season, episode, name, job_title FROM celeb, snl_show WHERE name = host; +----+--------+---------+--------+-----------+ | id | season | episode | name | job_title | +----+--------+---------+--------+-----------+ | 1 | 8 | 7 | 강동원 | 배우 | | 2 | 8 | 8 | 유재석 | 개그맨,MC | | 3 | 8 | 9 | 차승원 | 배우 | | 4 | 8 | 10 | 이수현 | 가수 | +----+--------+---------+--------+-----------+🍀 쿼리 가독성을 위해 테이블명을 다 붙이는 걸 추천