테이블 합치기 INNER JOIN, LEFT OUTER JOIN

전영덕·2023년 6월 27일
0

SQL책 정리

목록 보기
8/10

두 개 이상의 테이블을 합쳐서 하나의 테이블로 만드는 방법을 알아보자.

열 합치기

내부 조인

  1. FROM/WHERE를 사용
select 테이블명1.열이름1, 테이블명2.열이름2
from 테이블명1, 테이블명2
where 테이블명1.key = 테이블명2.key
;
  • 내부 조인은 두 테이블의 키 값이 매칭될 경우 모든 열을 나타낸다.
  1. FROM/WHERE와 별칭을 사용
select 별칭1.열이름1, 별칭2.열이름2
from 테이블명1 (as) 별칭1, 테이블명2 (as) 별칭2
where 테이블명1.key = 테이블명2.key
;
  • 위와 동일하지만 한 가지 차이는 테이블 이름에 새롭게 별칭을 주었다는 점이다. 참고로 오라클을 포함한 몇몇 DBMS는 테이블명 별칭을 줄 때 AS키워드가 지원되지 않으므로 AS를 빼고 테이블 별칭을 설정해야 한다.
  1. INNER JOIN을 사용
select 테이블명1.열이름1, 테이블명2.열이름2
from 테이블명1 inner join 테이블명2
on 테이블명1.key = 테이블명2.key
;
  • inner join을 사용하여 두 테이블을 합칠 수 있다. on뒤에 두 테이블의 연결고리가 되는 키 값을 적으면 된다.
  1. INNER JOIN과 별칭을 사용
select 별칭1.열이름1, 별칭2.열이름2
from 테이블명1 (as) 별칭1 inner join 테이블명2 (as) 별칭2
on 테이블명1.key = 테이블명2.key
;

외부 조인

  1. LEFT OUTER JOIN
select 별칭1.열이름1, 별칭2.열이름2
from 테이블명1 (as) 별칭1 left outer join 테이블명2 (as) 별칭2
on 별칭1.key = 별칭2.key
;
  • 왼쪽 테이블을 기준으로 조인하는 방법으로 OUTER 를 생략해도 된다.
    만약 왼쪽 테이블에는 존재하지만 오른쪽 테이블에는 존재하지 않는 키 값이 있다면 null값으로 반환이 된다.
  1. RIGHT OUTER JOIN
  • 위에서 left 가 right로 바뀐것이지만 테이블을 기준으로 바꾸어버려서 모두 left outer join을 하는 것이 더 좋다.
  1. FULL OUTER JOIN
select 별칭1.열이름1, 별칭2.열이름2
from 테이블명1 (as) 별칭1 full outer join 테이블명2 (as) 별칭2
on 별칭1.key = 별칭2.key
;
  • 합집합으로 모든 값을 합하여 나타낸다. 한쪽 테이블에는 있고 다른 테이블에는 없는 값이 있다면 null로 반환한다.

행 합차기

UNION 연산자

select 열이름1, 열이름2
from 테이블명1
where 조건절
union
select 열이름1, 열이름2
from 테이블명2
where 조건절
order by 1
;

0개의 댓글