저번에 설명 드려던 내부 조인에 대해 이해를 돕고자 예제를 만들어봤습니다.
이 예제를 가지고 앞으로 조인에 대해 설명을 드리도록 하겠습니당.
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은 이와 반대이므로 설명 안드려도 될꺼라 봅니다.
/*왼쪽 조인*/
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 |