Join & subquery
Join & subquery
JOIN & SubQuery
JOIN
둘이상의 테이블에서 데이터가 필요한 경우 사용하는 형식
INNER JOIN
- 가장 일반적인 JOIN의 종류
- 교집합
- N개의 테이블 조인 시 N - 1개의 조인 조건이 필요
1
2
3
4
5
6
7
8
9
10
11
SELECT COL1, COL2,,, COLn
-- using을 활용하는 방식
FROM TABLE1 JOIN TABLE2 USING(공통COLUMN);
-- on을 사용하는 방식
FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.C = TABLE2.C
-- where 절을 이용하는 방식
FROM TABLE1 T1, TABLE2
WHERE T1.id = T2.id
using
절에서는 alias를 명시하면 오류난다.
Outer Join
- Left outer join, full outer join 등으로 구분 됨
- 한쪽 테이블에는 존재하지만 다른 테이블에는 존재하지 않을 때 주로 사용
- MySQL에서 outer join은 지원하지 않는다.
- 아래와 처럼 left와 right를 동시에 해서 합집합 하면 비슷한 효과를 얻을 수 있다.
1
2
3
SELECT * FROM TableA A LEFT JOIN TableB B
UNION
SELECT * FROM TableA A RIGHT JOIN TableB B
Self Join
- 같은 테이블끼리 Join
1
2
3
select e.id, e.name, m.id, m.name
from employees e inner join employees m
on e.id = m.id;
- 모든 사원의 정보를 알고 싶을 때 사용한다.
None-Equi Join
- PK나 FK가 아닌 일반 컬럼으로 join
- 모든 사원의 정보를 받을 수 있다.
SubQuery
- 다른 쿼리 내부 안에 있는 SELECT문
- 서브 쿼리를 포함하고 있는 쿼리를 외부 쿼리, 서브쿼리를 내부 쿼리라고 한다.
서브 쿼리의 종류
- 중첩 서브 쿼리 : WHERE 문에 작성하는 서브 쿼리
- 단일 행
- 복수 행
- 다중 컬럼
- 인라인 뷰 : FROM문에 작성하는 서브 쿼리
스칼라 서브 쿼리 : SELECT문에 작성하는 서브 쿼리
- insert나 update의 경우 동일 테이블에서 서브쿼리가 사용불가
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.