JOIN은 여러 테이블을 연결하는 방법입니다.
JOIN을 통해 여러 개의 테이블에서 조건에 맞는 데이터를 조회할 수 있습니다.
두 개 이상의 테이블을 특별한 조건없이 논리곱(AND)로 조합합니다. FROM절에 출력 대상 테이블의 목록을 콤마(,)로 나열하여 작성합니다.
SELECT * FROM tCar CROSS JOIN tMaker;
-- CROSS JOIN 생략 가능
SELECT * FROM tCar, tMaker;
✔ WHERE 조건절을 사용하여 조건을 만족하여 중복되는 값만 출력하도록 주로 사용합니다.
SELECT * FROM car, maker WHERE car.maker = maker.maker;
✔ 여러 테이블을 조인할 때는 테이블명.칼럼명(car.maker) 등으로 사용하며, 테이블 별명을 지정하여 사용할 수 있습니다.
가독성과 관리 효율성을 위해서 테이블 별명은 필수적으로 지정하는 것이 좋습니다.
SELECT C.car, C.price, M.maker, M.factory FROM tcar C, tmaker M WHERE C.maker = M.maker;
각 테이블의 필드 값을 비교하여 조건에 맞는 레코드만 선택적으로(합집합) 가져옵니다.
FROM 절의 INNER JOIN 양쪽에 조인할 테이블명을 지정하고 ON 다음에 조인 조건을 작성하여 사용합니다.
-- 기본형식
SELECT 필드명 FROM A [INNER] JOIN B ON 조건;
SELECT C.car, C.price, M.maker, M.factory FROM tcar C INNER JOIN tmaker M ON C.maker = M.maker;
✔ 내부 조인을 작성할 때는 ON 조건을 필수적으로 사용해야 합니다.
✔ 같은 필드명을 사용할 때는 USING으로도 사용할 수 있습니다.
SELECT C.car, C.price, maker, M.factory FROM tcar C INNER JOIN tmaker M USING (maker);
외부 조인은 오른쪽 조인, 왼쪽 조인을 구분하여 기준으로 사용하며, 내부 조인과 달리 조건에 맞지 않는 필드도 함께 출력합니다.
SELECT C.car, C.price, M.maker, M.factory
FROM tcar C
LEFT OUTER JOIN tmaker M ON C.maker = M.maker;
'주종관계'에 있는 테이블에서 주테이블의 모든 레코드를 보여주고, 조건을 만족하는 부테이블의 필드를 같이 출력합니다.
✔ 왼쪽조인은 주테이블이 왼쪽 테이블이 됩니다.
✔ 조건을 만족하지 않아도 주테이블의 모든 레코드를 출력한다는 점에서 내부조인과 차이가 있습니다.
SELECT C.car, C.price, M.maker, M.factory
FROM tcar C
RIGHT OUTER JOIN tmaker M ON C.maker = M.maker;
✔ 오른쪽조인은 주테이블이 오른쪽 테이블이 됩니다.
SELECT O.member, M.addr, O.item, I.company
FROM tmember M
LEFT OUTER JOIN torder O ON M.member = O.member
LEFT OUTER JOIN titem I ON O.item = I.item
LEFT OUTER JOIN tcategory C ON I.category = C.category
WHERE C.delivery >= 2000;
여러 개의 테이블을 연결할 때 다중조인을 사용할 수 있습니다.
✔ 주테이블이 먼저 오는 것이 좋으므로 일반적으로 LEFT OUTER JOIN으로 많이 사용합니다.