[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 7월 4일 월요일

[DB] SQL JOIN 을 알아보자..

일전에 SELECT 쿼리문에 대한 정리를 한 글아웃사이더 햄 블로그에서 가져온 적이 있었다.. 해당 글에는 SELECT 쿼리에 대한 내용이 전반적으로 정리 되어 있었는데..

얼마전 JOIN 에 대해서 조금 더 알아야되고, 설명해야 될 상황을 직면하게 되었는데.. 단순히 어떻게 쓴다 말고는 좀 세부적인(?) 풀어서 설명하는 것에 한계를 느꼈다.. 이래서 기초가 개념이 중요한가보다.. 제길슨.. ㅠㅜ

무튼 소 잃고 외양간 고치는 상황스럽긴 하지만 그래서 이번 기회에 조금 더 확실하게 설명을 하면서 나 스스로도 정리하고 넘어가고자.. 해당 포스팅을 하기로 마음 먹게 되었으며, 포스팅 하고자 하는 해당 JOIN 쿼리는 INNER JOIN[이너 조인]과 OUTER JOIN[아우터 조인] 이 두가지다..

그럼 JOIN 이란 무엇이냐.. JOIN 은 두 개 이상의 테이블이 존재하고 있을 때 연관관계를 연결하여 원하는 결과값을 가져오고자 할 때 사용하게 된다..

INNER JOIN..
JOIN 하려는 테이블 대상의 쿼리문에 ON 절 조건이 일치하는 데이터들만 출력을 한다.. 즉, 수학에서 배우는 교집합이라고 생각하면 조금 더 오래 기억할 수 있을 듯 하다..

실제 예제 쿼리는 아래와 같다..

SELECT * FROM TAB_A AS TA INNER JOIN TAB_B AS TB
ON TA.CASE = TB.CASE

위와 같이 하면 결과는 TAB_A, TAB_B 두 테이블에서 ON 절에 코딩한것처럼 두 테이블의 CASE 가 일치하는 데이터만 출력하게 되는 것이다..

OUTER JOIN..
JOIN 하려는 테이블 대상 중 한쪽의 데이터만 모두 출력하는 것이다.. 그래서 OUTER JOIN 에는 LEFT, RIGHT 가 대표적으로 존재한다.. 여기서는 개념 자체를 잡는 것이 중요하기 때문에 우선은 LEFT OUTER JOIN 을 토대로 설명하려고 한다..

실제 예제 쿼리는 아래와 같다..

SELECT * FROM TBLE_A AS TA LEFT OUTER JOIN
TBLE_B AS TB ON TA.CASE = TB.CASE

위와 같이 하면 결과는 두 테이블 중 좌측 테이블인 TBLE_A 의 데이터가 모두 출력되며, ON 절의 조건에 해당하는 TBLE_B 의 데이터가 같이 출력된다.. 단, 조건에 해당하지 않는 TBLE_B 데이터는 NULL 로 표시가 된다..

음 원래는 여기서 마무리를 하려고 하였다.. 위에 도입부 글을 봐도 그렇게 느낄 것이다.. 근데 교집합과 합집합의 개념이 될 수 있는 JOIN 을 하다보니 전형적인 합집합 개념의 구문도 올리는 것이 왠쥐.. 좋을듯 해보였다.. 그래서 UNION ALL 도 마지막으로 얘기를 하고서 마무리 하려고 한다..

UNION ALL..
해당 쿼리는 말 그대로 딱!!! 수학의 합집합니다.. 양 테이블의 데이터를 모두 보여주는 것이다.. 단, 유의할 사항이 두가지가 있는데..

첫째는 두 테이블의 컬럼 수가 동일해야 된다..
둘째는 두 테이블의 컬럼 Data Type 이 일치해야 된다..

위 사항을 숙지하면서 예제를 보자..

SELECT A.VAL1, A.VAL2, FROM (
       SELECT A1.VAL1, A1.VAL2 FROM TBLE_A AS A1
    UNION ALL
       SELECT B1.VAL1, B1.VAL2 FROM TBLE_B AS B1
) A

이러한 패턴이 되겠다.. 저렇게 하면 TBLE_A 와 TBLE_B 데이터의 값들을 모두 출력하게 되는 것이다.. 출력에 대한 소팅이나 기타 조건은 본인이 상황에 따라 조절하면 되겠다..

댓글 없음:

댓글 쓰기