여러 개로 나뉜 데이터를 하나로 묵어 결과를 도출해내는 방법이 테이블 결합이다.
테이블 결합의 기본이 되는 개념은 곱집합이다
곱집합은 합집합이나 교집합처럼 집합의 연산 방법 중 하나이다.
예를 들어 X집합은 {A,B}, Y집합은 {1,2}일 때 집합X와 집합Y의 곱집합은 {(A,1),(A,2),(B,1),(B,2)}이다
교차집합
SELECT * FROM 테이블명1, 테이블명2
집합 X, Y가 있다
FROM 구에 복수의 테이블을 지정하면 교차결합을 한다
예제처럼 테이블을 만들어두면 동일한 상품명을 가진 상품이라도 구별하여 등록할 수 있다
재고 관리 테이블도 만들 수 있다
재고수 테이블에서는 상품코드를 통해 상품 테이블과 연결할 수 있다는 것이다
재고수의 상품코드와 상품의 상품코드가 다르다는 것을 알 수 있다
WHERE구를 통해 상품코드가 동일하다는 조건을 지정한다
이렇게 교차결합으로 계산된 곱집합에서 원하는 조합을 검색하는 것을 '내부결합(Inner Join)' 부른다
만약 상품분류가 식료품일 때의 조건을 추가하고 싶으면?
AND를 통해 추가하면 된다
지금까지의 결합방법은 구식이고 요즘은 INNER JOIN을 사용한다
내부결합
SELECT * FROM 테이블명1 INNER JOIN 테이블명2 ON 결합조건
외부결합은 '어느 한 쪽에만 존재하는 데이터행을 어떻게 다룰지'를 변경할 수 있는 결합 방법이다
내부결합에서는 상품코드가 0009인 상품이 제외된다
이런 경우에 외부결합을 사용하면 된다
외부결합은 결합하는 테이블 중에 어느 쪽을 기준으로 할지 결정할 수 있다
재고수 테이블에는 0009에 대한 데이터가 없으므로 값이 NULL로 표시된다
LEFT JOIN, RIGHT JOIN으로 외부결합을 할 수 있다