조인(join)에 종류가 많지만 많이 사용되는 3가지 조인(join)에 대해서만 정리를 한번 해 보았다.
INNER JOIN 절
A테이블과 B테이블에 조인조건에 일치하는 데이터만 보여준다.
A테이블
이름 | 주소 | 성별 |
mark | 서울 | 남 |
jein | 부산 | 여 |
tom | 대전 | 남 |
B테이블
이름 | 취미 | 특기 |
mark | 골프 | 제기차기 |
jon | 등산 | 널뛰기 |
jein | 게임 | 구슬치기 |
이렇게 2개의 테이블이 있을경우 A테이블과 B테이블의 조건을 잡을 수 있는 키가 되는 이름칼럼으로
Inner Join 을 했을 경우 아래와 같은 결과가 나타난다.
결과테이블
이름 | 주소 | 성별 | 취미 | 특기 |
mark | 서울 | 남 | 골프 | 제기차기 |
jein | 부산 | 여 | 게임 | 구츨치기 |
이렇게 조건칼럼에 공통으로 일치하는 칼럼의 정보만 나타난다.
SQLite 문법으로는 아래와 같이 사용하면 결과가 나타난다.
select a.이름, a.주소, a.성별, b.취미, b.특기
from A테이블명칭 a
inner join B테이블명칭 b
on a.이름 = b.이름
LEFT OUTER JOIN 절
left outer join 의 경우 기준이 되는 테이블은 전체가 select가 되고, left outer join 으로 추가 되는 테이블에서
조인조건에 충족되는 데이터는 보여주고 없는경우 해당 값은 null값이 된다.
예시)
A테이블
반 | 인원 | 담당선생님 |
웃음반 | 5 | jon |
행복반 | 8 | julia |
재미반 | 6 | brawn |
열정반 | 7 | sandy |
B테이블
선생님 | 특기과목 | 경력 |
jon | 체육 | 10년 |
sandy | 미술 | 25년 |
A테이블의 담당선생님과 B테이블의 선생님을 조인조건으로 하고 결과테이블을 조회했을경우
아래와 같다.
결과테이블
반 | 인원 | 담당선생님 | 특기과목 | 경력 |
웃음반 | 5 | jon | 체육 | 10년 |
행복반 | 8 | julia | <null> | <null> |
재미반 | 6 | brawn | <null> | <null> |
열정반 | 7 | sandy | 미술 | 25년 |
결과테이블과 같이 조인조건에 해당되는 B테이블의 정보는 나타나지만 조인조건에 해당되는
데이터를 찾지못한 row 의 B테이블의 값은 null로 나타난다.
결과테이블 값을 찾는 문법은 아래와 같다.
select a.반, a.인원, a.담당선생님, b.특기과목, b.경력
from A테이블 a
left outer join B테이블 b
on a.담당선생님 = b.선생님
CROSS JOIN 절
cross join 은 기준테이블과 cross join으로 추가되는 테이블을 곱하여 보여준다고 생각하면 된다.
예를들어 A테이블에 3row가 있고 B테이블에 4row가 있으면 총 12row의 결과데이터가 조회된다고 보면된다.
행별로 경우의 수가 다 발생되기 때문에 특별히 조인조건을 설정하지는 않는다.
A테이블
과일 | 원산지 | 구매가격 |
수박 | 국산 | 9,900 |
바나나 | 필리핀 | 1,800 |
한라봉 | 국산(제주도) | 15,500 |
B테이블
품종 | 용도분류 | 보관장소 |
특대 | 선물용 | A 1-2-4 |
대 | 일반판매 | A 1-4-7 |
중 | 일반판매 | B 2-7-3 |
소 | 쥬스용 | B 1-5-2 |
두 테이블을 CROSS JOIN을 할 경우 결과테이블은 아래와 같다.
결과테이블
과일 | 원산지 | 구매가격 | 품종 | 용도분류 | 보관장소 |
수박 | 국산 | 9,900 | 특대 | 선물용 | A 1-2-4 |
수박 | 국산 | 9,900 | 대 | 일반판매 | A 1-4-7 |
수박 | 국산 | 9,900 | 중 | 일반판매 | B 2-7-3 |
수박 | 국산 | 9,900 | 소 | 쥬스용 | B 1-5-2 |
바나나 | 필리핀 | 1,800 | 특대 | 선물용 | A 1-2-4 |
바나나 | 필리핀 | 1,800 | 대 | 일반판매 | A 1-4-7 |
바나나 | 필리핀 | 1,800 | 중 | 일반판매 | B 2-7-3 |
바나나 | 필리핀 | 1,800 | 소 | 쥬스용 | B 1-5-2 |
한라봉 | 국산(제주도) | 15,500 | 특대 | 선물용 | A 1-2-4 |
한라봉 | 국산(제주도) | 15,500 | 대 | 일반판매 | A 1-4-7 |
한라봉 | 국산(제주도) | 15,500 | 중 | 일반판매 | B 2-7-3 |
한라봉 | 국산(제주도) | 15,500 | 소 | 쥬스용 | B 1-5-2 |
해당 결과 테이블과 같이 경우의 수가 조회결과로 나타난다.
결과 테이블의 조회 문법은 아래와 같다.
select a.과일, a.원산지, a.구매가격, b.품종, b.용도분류, b.보관장소
from A테이블 a
cross join B테이블 b
댓글