join
- join 은
inner join 과 outer join 두가지로 나뉨
inner join 은 테이블에서 조건에 일치하는 결과만 조회
outer join 은 테이블에서 조건하는 일치하는 결과와 일치하지 않는다면 null로 채워서 조회
inner join
- A와 B에 대해 수행한다는 것은, A와 B의 교집합을 말함
- 다음 그림을 가져온다고 생각하면 편하다

outer join
- A와 B에 대해 수행하는 것은, A와 B의 합집합을 말함
- 다음 상황은
left outer join 일 경우

저장된 예시 데이터
| Code | Name | Continent | Population | isTraveled |
|---|
| KOR | South Korea | Asia | 48000000 | YES |
| JAP | Japan | Asia | 100000000 | YES |
| CAN | Canada | North America | 38000000 | |
| BRA | Brazil | South America | 210000000 | |
| FRA | France | Europe | 65000000 | YES |
| DEU | Germany | Europe | 83000000 | |
| Code | Name | Age |
|---|
| KOR | Pang | 28 |
| JAP | Kazuma | 34 |
| CAN | Sam | 31 |
| BRA | Brit | 27 |
| FRA | Monse | 28 |
INNER JOIN
from -> on -> join -> where 순서로 진행
inner join + on
select c.Code, c.Name, c.Population
from country c
inner join friend f
on c.Code = f.Code;
country 테이블의 Code 와 friend 테이블의 Code가 같은 목록을 조회
- 컬럼명이 다르더라도
join조건을 사용할 수 있음
on 조건절은 where조건절 처럼 조건을 직접 걸 수 있음
inner join + using
select c.Code, c.Name, c.Population
from country c
inner join friend f using(Code);
- 컬럼명이 같을때 쉽게 사용할 수 있음
using 조건절을 이용하여 원하는 컬럼에 대해서만 선택적으로 join을 할 수 있음
natural join
select empno, sal
from emp
natural join emp2
- 반드시 두 테이블 간 동일한 이름, 타입을 가진 컬럼이 필요
join에 이용되는 컬럼은 명시하지 않아도 자동으로 join에 사용
- 동일한 이름을 갖는 컬럼이 있지만 데이터 타입이 다르면 에러가 발생
Outer join
left outer join
select f.Code, f.Name, f.Age
from country c left outer join friend f
on c.Code = f.Code;
join문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후, 오른쪽 테이블의 데이터를 매칭
- 매칭되는 데이터가 없는 경우
null로 표시
right outer join
select f.Code, f.Name, f.Age
from country c right outer join friend f
on c.Code = f.Code;
join문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후, 왼쪽 테이블의 데이터를 매칭
- 매칭되는 데이터가 없는 경우
null로 표시
escape 연산
- 와일드 문자인
% 와 _ 는 각각 0개 이상의 문자열 과 임의의 한개의 문자열 이라는 의미를 가짐
% 와 _ 가 존재하는지 검색하고 싶을때 escape를 사용
select *
from country
where name like '%!_%' escape '!';
- 위와 같은 SQL은
escape문자를 !로 사용하였고, _ 문자를 포함한 모든 name 을 country 테이블에서 찾는다는 예제