안녕하세요!
이번 포스팅은 SQL INNER JOIN 의 구문에 대해서 알아보겠습니다.
INNER JOIN은 테이블간의 교집합이라고 생각하면 쉽게 이해될듯 합니다.
아래 그림을 참조하시기 바랍니다.
이미지 출처 : w3schools
이미지에서 볼 수 있듯이 table1 과 table2와 겹친 초록색 부분이 내용으로 나타나게 됩니다.
기본적인 구문
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
또는
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;
// INNER 를 생략한 구문이지만 동일한 구문입니다.
실제로 예제 테이블을 이용하여 값을 가져와 보겠습니다.
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 |
1003 |
6 |
2006-05-12 |
3 |
// 위 테이블 이름은 임시로 ORDER 라고 정의하겠습니다.
두 테이블을 자세히 살펴보면 p_num 이라는 중복된 필드명이 있는것을 확인할 수 있습니다. 이제부터 그 중복된 p_num을 가지고 inner join 을 만들어보겠습니다. 여기까지 설명드려도 눈치가 빠른 분들은 join을 하면 어떤 내용이 나올지 짐작하는 분들도 계실거라 생각합니다.
INNER JOIN 구문
select info.name, order.employ_date, order.caree_year
from info
inner join order
on info.p_num = order.p_num
order by info.name;
// 구문을 살펴보면 우선 info 테이블의 name과 order 테이블의 employ_date, caree_year 데이터를 추출하고 inner join 을 한 후 양 테이블의 p_num 이 일치되는 내용을 가져온후 info 테이블의 name 값으로 오름차순(asc 생략) 정렬을 하는 구문입니다.
지금까지 2개의 테이블을 사용하여 예제를 만들어가며 설명드렸는데 실무에서는 그보다 더 많은 테이블을 join 하는 경우도 많이 있기 때문에 응용을 많이 해보시기 바랍니다. ^^
다음 포스팅에서는 LEFT JOIN 구문에 대해서 알아보겠습니다.
자~ 그럼 오늘도 즐거운 하루 보내시길 바라며,
즐거운 프로그래밍 되시기 바랍니다.
'SQL' 카테고리의 다른 글
SQL RIGHT JOIN 구문 (1) | 2013.09.03 |
---|---|
SQL LEFT JOIN 구문 (0) | 2013.09.02 |
SQL JOIN 구문 (2) | 2013.08.29 |
SQL AS(Aliases) 구문 (0) | 2013.08.27 |
SQL BETWEEN 구문 (2) | 2013.08.23 |