Join
MySQL의 sql로 관계 대수의 자연 조인, 세타 조인, 외부 조인, 세미 조인, 카티션 곱 등이 가능하다.
inner join
두 릴레이션에 있는 모든 튜플을 조회 한다. 조인을 할 때 주로 ANSI 조인 형태를 사용한다. ANSI 조인은 JOIN 키워드와 ON이 있기 때문에 쉽게 조인 조건을 알 수 있다.
# ANSI 조인 형태
# 다른 sql에서도 범용적으로 사용 가능
# where 조건절과 join 조건이 분리되므로 가독성이 높음
select *
from table_l
[inner] join table_r
on table_l.common = table_r.common;
# 조인 속성이 동일 하다면 아래와 같이 쓸 수 있음
select *
from table_l
[inner] join table_r
using(common);
# 일반 조인 형태
# 잘 쓰이진 않음
select *
from table_l, table_r
where l.common = r.common
left outer join
왼쪽 릴레이션을 기준으로 왼쪽 릴레이션을 모두 조회하고 오른쪽 릴레이션의 값이 없는 경우, null로 조회한다.
select *
from table_l
left [outer] join table_r
on table_l.common = table_r.common;
right outer join
오른쪽 릴레이션을 기준으로 모두 조회하고 왼쪽 릴레이션의 값이 없는 경우, null로 조회한다.
select *
from table_l
right join table_r
on table_l.common = table_r.common;
full outer join
어느 한 릴레이션이라도 데이터를 갖고 있으면 조회한다. left outer join와 right outer join의 union 연산으로 full outer join을 수행할 수 있다.
select l.common, l.col_l, r.col_r
from table_l l
left join table_r r
using(common)
union
select r.common, l.col_l, r.col_r
from table_l l
right join table_r r
using(common);
이 외에도 카티션곱, 자연 조인, 자신과의 세타 조인, 세미 조인(부속 질의문 사용) 등을 할 수 있다.
'Computer Science > DataBase' 카테고리의 다른 글
정규화 (0) | 2024.10.06 |
---|---|
Mysql 서브 쿼리 (0) | 2023.11.16 |
[데이터베이스 - 9] 병행 제어 (0) | 2022.10.14 |
[데이터베이스 - 8] 장애와 회복 (0) | 2022.10.12 |
[데이터베이스 - 7] 트랜잭션 (0) | 2022.10.11 |