고똘이의 IT 개발이야기

안녕하세요.

오늘은 쿼리문의 기본 문법인 JOIN에 대해서 말씀 드리겠습니다.

 

현재 처음 DB를 시작 하시는분들은 기본적이 SELECT, DELETE, UPDATE, INSERT 정도의 문법을

가지고 개발을 시작 하시는데요. 이번에는 기본 문법에서 조금 더 나아간 문법인 JOIN에 대해서

설명 드리겠습니다.

 

처음으로 기본적으로 많이 쓰이는 INNER JOIN, LEFT JOIN, RIGHT JOIN에 대해서 설명 드리겠습니다.

 

아래의 소스 코드에 자세한 주석이 달려 있으니 한번씩 읽어봐 주시면 이해하는데 도움이 많이 되실거

같습니다.

 

1. 처음으로 INNER JOIN에 대한 설명입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 제일 기본적인 INNER JOIN문 입니다.
-- TABLE1이라는 테이블과 TABLE2라는 테이블을 JOIN을 합니다.
-- INNER JOIN의 경우 공통적인 값이 존재 할 경우 값을 표출 합니다.
-- 수학의 합집합이라고 생각하시면 됩니다.
-- TABLE1의 INDEX와 TABLE2의 INDEX가 값이 같은 경우 두개의
-- 테이블에서 데이터를 가지고 올 수 있습니다.
-- 만약 두 개의 데이터가 맞지 않을 경우 두개의 테이블에서
-- 데이터를 가지고 올 수 없습니다.
 
SELECT 
    TA1.NAME
    , TA1.PHONE_NUMBER
    , TA2.STATUS
FROM TABLE1 TA1
    INNER JOIN TABLE2 TA2
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

2. 두번째로는 LEFT JOIN에 대한 설명입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-- LEFT JOIN의 경우 INNER JOIN과는 비슷 하지만 다릅니다.
-- LEFT JOIN의 경우 왼쪽에 존재하는 TABLE1의 데이터는 모두 가지고 올 수 있습니다.
-- LEFT JOIN의 경우 현업에서 보통 TABLE1의 데이터는 모두 표출을 하여야 하고
-- TABLE2의 경우 TABLE1과 연관은 되어 있지만 TABLE1의 데이터를 INSERT 할 경우 TABLE2에
-- 데이터를 넣을수도 있고 아니면 안 넣을수도 있는 필수적인 테이블은 아니지만
-- 한 화면에서 두개의 데이터를 조합하여 표출을 할때 많이 사용 됩니다.
-- 예를 들어서 철수라는 아이가 사과를 샀습니다.
-- 철수가 사과를 샀는데 과일가게 아저씨가 사과를 샀더니 배를 공짜로 주었습니다.
-- 그럴 경우 철수는 TABLE1에 자기가 지출해서 산 사과를 INSERT 하였습니다.
-- 그러나 배는 공짜로 받았기 때문에 TABLE2에 배를 INSERT 하였습니다.
-- 그러나 같은 반인 민수는 배를 샀더니 사과를 공짜로 주지 않았습니다.
-- 그리하여 민수는 TABLE1에 배만 INSERT 하였습니다.
-- 그럴경우 같은 반의 아이들이 과일을 얼마나 가지고 있냐고 물었을때
-- 철수는 TABLE1에 사과와 TABLE2의 배를 합하여 2개의 과일을 가지고 있고
-- 민수는 TABLE1에 있는 배만 가지고 있는 데이터를 표출 할 수 있습니다.
 
 
 
SELECT 
    TA1.NAME
    , TA1.PHONE_NUMBER
    , TA2.STATUS
FROM TABLE1 TA1
    LEFT JOIN TABLE2 TA2
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

3. 세번째는 RIGHT JOIN입니다.

 

1
2
3
4
5
6
7
8
9
10
11
-- RIGHT JOIN는 위의 LEFT JOIN에 반대되는 개념입니다.
-- RIGHT JOIN의 경우 TABLE2의 데이터는 모두 가지고 오지만 TABLE1의 경우
-- TABLE2의 INDEX와 TABLE1의 INDEX 번호가 맞아야지만 데이터를 가지고 올 수 있습니다.
SELECT 
    TA1.NAME
    , TA1.PHONE_NUMBER
    , TA2.STATUS
FROM TABLE1 TA1
    RIGHT JOIN TABLE2 TA2
ON TA1.INDEX = TA2.INDEX;
 
cs

 

이상으로 기본적인 JOIN문에 대해서 설명 드렸습니다.

많은 도움이 되셨으면 댓글 하나씩 남겨 주시면 감사하겠습니다.

개발자에게 많은 도움이 됩니다.

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band