[SQL] JOIN

아임펭·2024년 5월 20일

SQL

목록 보기
8/9

1. 조인(JOIN)

JOIN은 여러 테이블을 연결하는 방법입니다.
JOIN을 통해 여러 개의 테이블에서 조건에 맞는 데이터를 조회할 수 있습니다.

1) 단순조인 : CROSS 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;

2) 내부조인 : INNER JOIN

각 테이블의 필드 값을 비교하여 조건에 맞는 레코드만 선택적으로(합집합) 가져옵니다.

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);

3) 외부조인 : OUTER JOIN

외부 조인은 오른쪽 조인, 왼쪽 조인을 구분하여 기준으로 사용하며, 내부 조인과 달리 조건에 맞지 않는 필드도 함께 출력합니다.

(1) 왼쪽조인(LEFT OUTER JOIN)

SELECT C.car, C.price, M.maker, M.factory 
	  FROM tcar C
      LEFT OUTER JOIN tmaker M ON C.maker = M.maker;

'주종관계'에 있는 테이블에서 주테이블의 모든 레코드를 보여주고, 조건을 만족하는 부테이블의 필드를 같이 출력합니다.
✔ 왼쪽조인은 주테이블이 왼쪽 테이블이 됩니다.
✔ 조건을 만족하지 않아도 주테이블의 모든 레코드를 출력한다는 점에서 내부조인과 차이가 있습니다.

(2) 오른쪽조인(RIGHT OUTER JOIN)

SELECT C.car, C.price, M.maker, M.factory 
	  FROM tcar C
      RIGHT OUTER JOIN tmaker M ON C.maker = M.maker;

✔ 오른쪽조인은 주테이블이 오른쪽 테이블이 됩니다.

(3) 다중조인

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으로 많이 사용합니다.

profile
I'm peng

0개의 댓글