오늘은 JOIN에 대해 알아보겠습니다.
JOIN은 번역하면 참여하다라는 뜻으로 DB에서는 두 개 이상의 테이블이나 데이터베이스를 연결하는 것입니다.
검색하고 싶은 값들이 두 개 이상의 테이블에 있을 경우, 한개의 테이블로 JOIN을 시킨 후, 결과를 가져옵니다.
보통의 경우는 KEY를 가지고 두 개의 테이블을 연결합니다.
JOIN의 종류는 자주쓰이는 4가지가 있습니다.
INNER, NATURAL, LEFT, RIGHT 총 4가지에 대해 하나씩 알아보겠습니다.
먼저 JOIN에 대한 개념을 잡기 위해 그림 하나를 보시겠습니다.
출처 : https://dsin.wordpress.com/2013/03/16/sql-join-cheat-sheet/
위의 그림을 보면 각 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;
================================================================
오늘 포스팅은 여기까지입니다.
'Database > Mysql' 카테고리의 다른 글
[Mysql] Event Scheduler 설정 (0) | 2020.05.19 |
---|---|
[Mysql] InnoDB란 (0) | 2020.05.13 |
[Mysql] GRANT, REVOKE란? (0) | 2020.04.08 |
[Mysql] Galera 설치 (0) | 2020.03.17 |
[Mysql] DB, Table 생성 삭제 조회 (0) | 2017.12.14 |