본문으로 바로가기

[Mysql] JOIN 이란?

category Database/Mysql 2020. 4. 22. 02:11
728x90
반응형

오늘은 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;
================================================================


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

728x90
반응형

'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