일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
- spring3.0
- Programming
- OS
- 육아
- 책
- ThinkFree
- Eclipse
- 미국드라마
- Mac
- PSP
- Java
- 효민이
- 독서
- WebService
- Java5
- Programing
- Spring
- Vista
- db
- Swing
- Ant
- 행복이
- php
- 중고
- Linux
- 요리
- 부동산
- 판매
- 이승철
- WebLogic
- Today
- Total
Bitaholic
Table Join하기. 본문
Database에서 주로 쓰는 Join은'Inner join'이다.
이 join은 조인할 두 테이블을 모두 합해서 큰 테이블을 합하고(이 큰테이블에는 명시된 테이블에 있는 데이터의모든 조합이 들어가 있어야 한다. : A테이블 tuple수 * B테이블 tuple수 ... )
Inner join == FULL JOIN == Cartesian product (모두 같은 말이다)
그렇지만 Inner join으로 만든 모든 행이 필요하지 않기 때문에 필요한 행만 조인해서
쓰는'equi-join'을 많이 쓴다.
ex) select order.id, orders.amount, orders.date
from customers, orders <-- ',' 로 inner join을 한다.
where customers.name = 'Julie Smith'
and customer.customerid = orders.customerid; <-- 조건이 맞는넘들만 join 하게~
LEFT JOIN (일치 하지 않는 행 찾기)
: 양쪽 테이블에서 모두 매치되는 데이터가 아니면 조인에서 제외 되었다. 하지만 이런 데이터들도 모두 포함해야 할 경우가 있다. 한쪽의 매치되는 데이터가 없을 때에는 대신에 NULL을 넣어서 추가 시킨다.
ex) select sutomers.customerid, customers.name, orders.orderid
from customers left join orders
oncustomers.customerid = orders.customerid;
ON은 다음 과 같이 쓰일수도 있다.
using (customerid)
단 양쪽 테이블 모두 customerid라는 컬럼이 있어야 한다.
-Cartesian product : 조인에 쓰인 모든 테이블들의 모든 행의 조합, 테이블의 이름은 ','로 구분하고 WHERE는 쓰지 않는다.
-Full JOIN : 위와 같음
-Cross JOIN: 위와 같음. 테이블 이름들 사이에 CROSS JOIN이라고 명시하여 사용할수 있다.
-Inner JOIN: ',' 또는 INNER JOIN이라고 명시해 준다. WHERE로 조건을 달지 않으면 full join과 같다. 보통 WHERE와 같이 쓰여야 inner join이라고 할 수 있다.
-Equi-JOIN: 다른 테이블에서 일치하는 행을 찾기 위해 '='를 사용한다. WHERE와 같이 쓰인다.
-Left JOIN: 테이블간에 매치되지 않는 행이 있으면 NULL을 채워준다. LEFT JOIN 이라는 키워드로 사용되고, RIGHT JOIN도 쓸 수 있다.
- 참고 : 성공적인 웹프로그래밍 PHP와 MySql : Luke Welling, Laura Thomson 공저, 정보문화사