[SQL] JOIN

김보림·2024년 6월 6일
0

SQL 기초

목록 보기
9/17

두 개 이상의 테이블을 결합하는 것

📌 INNER JOIN


  • 두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식

select column1, column2,...
from tableA
inner join tableB
on tableA.column = table.column
where condition;

📌 LEFT JOIN


  • 두개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인방식

select column1, column2,...
from tableA
left join tableB
on tableA.column = table.column
where condition;

📌 RIGHT JOIN


  • 두개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 조인방식

select column1, column2,...
from tableA
right join tableB
on tableA.column = table.column
where condition;

📌 FULL OUTER JOIN


  • 두개의 테이블에서 공통영역을 포함하여 양쪽 테이블의 다른영역을 모두 포함하는 조인방식

select column1, column2,...
from tableA
full outer join tableB
on tableA.column = table.column
where condition;

🚨 MYSQL 에서는 FULL OUTER JOIN을 지원하지 않으므로 사용불가!🚨

( LEFT JOIN 과 RIGHT JOIN을 UNION으로 연결해 아래와 같이 해결가능 )

select column1, column2,...
from tableA
left join tableB
on tableA.column = table.column
where condition
union
```sql
select column1, column2,...
from tableA
right join tableB
on tableA.column = table.column
where condition;

📌 SELF JOIN


select column1, column2,...
from tableA, tableB
where condition;

✏️예시

  • celeb 테이블의 연예인 중, snl_show 에 host 로 출연했고 소속사가 안테나인 사람의 이름과 직업을 찾아라
select celeb.name, celeb.job_title
from celeb, snl_show
where celeb.name = snl_show.host
	and celeb.agency = '안테나';

or

select name, job_title
from celeb, snl_show
where name = host and agency = '안테나';

🚨유의사항🚨
동일한 컬럼명이 존재하는 경우에만 테이블명을 암시해도 된다.
BUT 쿼리 가독성을 위해 컬럼명을 명시하는 편이 좋음.

profile
볼로그

0개의 댓글