본문으로 바로가기

MySQL LEFT/RIGHT 조인

category 데이터베이스/MySQL 2018. 12. 21. 17:47

 

번에 설명 드려던 내부 조인에 대해 이해를 돕고자 예제를 만들어봤습니다.

 

이 예제를 가지고 앞으로 조인에 대해 설명을 드리도록 하겠습니당.

 

LEFT조인을 설명하기 앞서 내부 조인 예제를 설명할게요.

 

create table demo_people
(
 name varchar(40) not null,
    phone varchar(40) not null,
    pid integer(10) not null,
    primary key (pid)
);

insert into demo_people values('Mr Brown', '01020005343','1');
insert into demo_people values('Mr choke', '01020004242','2');
insert into demo_people values('Mr pullen', '01020005122','3');

demo_people Table

 

create table demo_property
(
 pid integer(10) not null,
    spid integer(10) not null,
    selling varchar(50) not null,
    foreign key (pid) references demo_people(pid)
);

insert into demo_property values('1', '1','Old House Farm');
insert into demo_property values('3', '2','The Willows');
insert into demo_property values('3', '3','Tall Trees');
insert into demo_property values('3', '4','The Melksham Florist');
  

demo_property Table

 

이렇게 테이블 두개를 준비해주세요.

 

우선 앞서 배운 내부조인은 문법의 형태가 어떻게 된다 했죠 ???

 

INNER JOIN Syntax

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

위와 같습니다.

즉 이를 적용해보면 내부조인은!!

 

/*일반 조인 */
select *
from demo_people join demo_property
on demo_people.pid = demo_property.pid;

 

즉 demo_people 테이블의 pid와 demo_property의 pid가 같은 것을 조인하는 일반적인 형태입니다.

즉 pid 같은 것을 기준으로 두 테이블이 합쳐져서 나오게 됩니다. 두 테이블은 현재 1과 3이 같으므로 1과 3에 대해서 합쳐진 내부조인이 나오게 되겠죠 ??

이런식으로 pid2는 없게 되겠죠.

 

자!

 *LEFT JOIN

이제 LEFT JOIN에 대해 설명드리겠습니다 .

이 그림이 기억나십니까??

즉 LEFT JOIN은 왼쪽 테이블의 목록을 출력 후 공통 부분에 대해 가져오는 겁니다. 이때 왼쪽 테이블에서 해당 공통부분이 없으면 NULL로 출력이 되겠죠 ??

RIGHT JOIN은 이와 반대이므로 설명 안드려도 될꺼라 봅니다.

 

SQL INNER JOIN  SQL LEFT JOIN  SQL RIGHT JOIN  SQL 전체 외부 조인

 

/*왼쪽 조인*/
select *
from demo_people left join demo_property
on demo_people.pid = demo_property.pid;

 

이를 실행하면 demo_people 테이블의 내용이 출력이 되고 해당 공통부분은 내용을 표시되고 아닌 것은 NULL로 나올 것입니다. 결과입니다.

보이나요??? pid가 1 과 3은 공통부분으로 왼쪽 기준으로 다 출력이 되고 때문에 2가 공통 부분이 없으므로 NULL이 출력됩니다.

 

*RIGTH JOIN

RIGHT 조인은

 

/*오른쪽 조인*/
select *
from demo_people right join demo_property
on demo_people.pid = demo_property.pid;

 

이를 실행하면 LEFT 조인과 반대로 오른쪽 demo_property 테이블 기준으로 전체 출력 후 왼쪽 테이블에서 공통부분을 출력 할 겁니다.

 

이런 식으로 나오게 됩니다.

지금까지 나온 테이블은 조인으로 인해 두 테이블이 합쳐진 상태에서 출력이 되는 겁니다.

많이 어려울 수도 있으니 모르는 점에 대해서는 댓글 남겨주시면 감사하겠습니다.

 

 

 

 

'데이터베이스 > MySQL' 카테고리의 다른 글

MySQL 전체 외부 조인(FULL OUTER JOIN)  (0) 2018.12.22
eXERD 설치  (0) 2018.12.21
MYSQL 내부 조인  (0) 2018.12.20
MYSQL 문법2  (0) 2018.12.20
MySQL 문법  (0) 2018.12.20