본문 바로가기
SQL

SQL LEFT JOIN 구문

by 진격의 파파 2013. 9. 2.
반응형

 

안녕하세요!! 

이번 포스팅에서는 SQL 에서 LEFT JOIN 구문에 대해서 설명드리겠습니다.

 

INNER JOIN 구문이 교집합 구문이었다면 LEFT JOIN은 LEFT 를 포함한 교집합 구문이라 생각하시면 되겠습니다.

 

 

이미지출처 : w3schools

 

위 그림에서 보면 table1 과 table2에 대해서 left join 을 한 모습인데 자세히 살펴보면 table1의 내용은 그대로 있고 table2와 겹치는 부분의 내용을 추출하는것을 볼 수 있습니다. 그리고 table1의 내용과 일치되지 않는 구문은 null 값을 반환하게 됩니다.

 

left join 의 기본구문

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

// inner join 의 형태와 사용법은 같습니다. 단지 틀려진건 inner -> left 로 바뀐것 입니다.

 

실제로 예제 테이블을 이용하여 값을 가져와 보겠습니다.

 p_num

 name

 age

 mobile

 1

 송기종

 42

 010-1111-1111

 2

 신석호

 41

 010-2222-2222

 3

 이현주

 35

 010-3333-3333

// 테이블 이름을 임시로 INFO 라고 정의하겠습니다.

 

 order_id

 p_num

 employ_date

 caree_year

 1001

 2

 2003-02-02

 5

 1002

 3

 2004-02-17

 6

// 위 테이블 이름은 임시로 ORDER 라고 정의하겠습니다.

 

위 두개의 테이블을 LEFT JOIN 하면

select * from info

left join order

on info.p_num = order.p_num;

 

또는

 

select * from info A

left join order B

on A.p_num = B.p_num;

 

위 두 구문은 같은 형식이며, 아래 구문은 as 의 구문이 생략된 형태입니다. info의 테이블 이름을 A라는 별칭으로 사용했고 order 의 테이블 이름을 B라는 별칭으로 사용했습니다.

 

그리고 중복되는 같은 두 개 이지만 총 레코드는 info의 레코드 개수 만큼 3개가 나오게 됩니다. 그리고 겹치지 않는 order 테이블의 레코드값은 NULL을 가져오게 됩니다.

 p_num

 name

 age

 mobile

 order_id

 p_num 

 employ_date

 caree_year

 1

 송기종

 42

 010-1111-1111

 NULL

 NULL

 NULL

 NULL

 2

 신석호

 41

 010-2222-2222

 1001

 2

 2003-02-02

 5

 3

 이현주

 35

 010-3333-3333

 1002

 3

 2004-02-17

 6

// 위 처럼 값이 출력됩니다.

 

지금까지 LEFT JOIN에 대해서 설명드렸습니다. 사실 예전에 ERP 관련 프로그램을 만들때는 join 구문을 참 많이 사용했었던 기억이 납니다. 그런데 PHP로 넘어오면서 홈페이지 작업을 위주로 일을 하다보니 조인 구문을 그렇게 많이 사용하진 않았습니다. 하지만 살다보면 꼭 이거다라는 정의를 내릴 수 없듯이 JOIN 구문을 알아두시면 언젠가 필요한 날이 오지 않을까 합니다 ㅎㅎ;;

 

그럼 다음 포스팅에서 RIGHT JOIN 구문으로 찾아뵙겠습니다. 남은 오늘 하루일정 잘 마무리 하시고 즐거운 시간 보내길 바라며 즐거운 프로그래밍 되길 바랍니다. ~

 

반응형

'SQL' 카테고리의 다른 글

SQL UNION 구문  (0) 2013.09.04
SQL RIGHT JOIN 구문  (1) 2013.09.03
SQL INNER JOIN 구문  (0) 2013.08.31
SQL JOIN 구문  (2) 2013.08.29
SQL AS(Aliases) 구문  (0) 2013.08.27