오늘은 JOIN에 대해 알아보겠습니다.
JOIN은 번역하면 참여하다라는 뜻으로 DB에서는 두 개 이상의 테이블이나 데이터베이스를 연결하는 것입니다.
검색하고 싶은 값들이 두 개 이상의 테이블에 있을 경우, 한개의 테이블로 JOIN을 시킨 후, 결과를 가져옵니다.
보통의 경우는 KEY를 가지고 두 개의 테이블을 연결합니다.
JOIN의 종류는 자주쓰이는 4가지가 있습니다.
INNER, NATURAL, LEFT, RIGHT 총 4가지에 대해 하나씩 알아보겠습니다.
먼저 JOIN에 대한 개념을 잡기 위해 그림 하나를 보시겠습니다.

출처 : https://dsin.wordpress.com/2013/03/16/sql-join-cheat-sheet/
SQL Join Cheat Sheet
useful naja Natural Join คือ ไม่ต้องระบุว่าจะเอา column อะไรมาเป็นตัวเทียบเท่ากัน Database จะไปดูว่า column ใดที่ชื่อเหมือนกันในทั้ง 2 ตาราง มันก็จะอนุมานเอา column นั้น มาเป็นใช้เป็นตัวเท่ากับ ใน…
dsin.wordpress.com
위의 그림을 보면 각 JOIN에 대한 개념을 쉽게 알 수 있습니다.
쿼리를 직접 사용하고, 결과를 보기 위해서 2가지 테이블을 간단히 만들어보았습니다.
================================================================
table a
no name
1 강호둥
2 유재식
3 이수곤
4 신동업
5 이경구
table b
no area
1 서울
4 부산
5 제주
================================================================
테이블을 만들고, 필드에 값을 넣는 쿼리는 아래와 같습니다.
================================================================
create table a
(
no int,
name varchar(20)
);
create table b
(
no int,
area varchar(20)
);
insert into a(no, name) values(1, '강호둥');
insert into a(no, name) values(2, '유재식');
insert into a(no, name) values(3, '이수곤');
insert into a(no, name) values(4, '신동업');
insert into a(no, name) values(5, '이경구');
insert into b(no, area) values(1, '서울');
insert into b(no, area) values(4, '부산');
insert into b(no, area) values(5, '제주');
================================================================
위의 2테이블로 JOIN에 대한 쿼리를 설명하도록 하겠습니다.
1. INNER JOIN
INNER JOIN은 교집합이라 할 수 있습니다.
가장 흔히 사용되는 JOIN입니다.
JOIN한 두 테이블의 공통된 부분을 검색하여 결과를 가져옵니다.
================================================================
select *
from a inner join b
on a.no = b.no;
================================================================

2. NATURAL JOIN
자연 조인은 조인된 테이블에서 동일한 칼럼명을 가진 2개의 테이블에서 모든 컬럼을 비교합니다.
결과적으로 같은 이름의 필드에 대해서는 하나만 보여주게 됩니다.
================================================================
select *
from a natural join b;
================================================================

3. LEFT OUTER JOIN
LEFT OUTER JOIN은 그림에서 처럼 왼쪽 테이블의 모든 데이터 중 오른쪽 테이블과 매칭이되는 레코드를 포함시킵니다.
================================================================
select *
from a left outer join b
on a.no = b.no;
================================================================

4. RIGHT OUTER JOIN
RIGHT OUTER JOIN은 그림에서 처럼 오른쪽 테이블의 모든 데이터 중 왼쪽 테이블과 매칭이되는 레코드를 포함시킵니다.
================================================================
select *
from a right outer join b
on a.no = b.no;
================================================================

오늘 포스팅은 여기까지입니다.