USING 절을 사용한 SQL 조인 방법

1. 핵심 원리

이 장에서는 SQL의 USING 절을 사용하여 두 테이블 간에 공통된 컬럼을 기준으로 데이터를 조인하는 방법에 대해 다룹니다. USING 절은 두 테이블에서 동일한 이름을 가진 컬럼을 이용해 조인을 수행할 때 유용합니다. 이 절은 WHERE 절에서 조인 조건을 작성하는 것과 달리 간결하게 조인 조건을 작성할 수 있게 해줍니다.

2. 실무에서 쓰이는 이유

실무에서 USING 절은 SQL 쿼리를 더욱 간결하고 명확하게 작성하는 데 사용됩니다. 특히 여러 테이블 간에 동일한 이름을 가진 컬럼이 있을 때 USING 절을 사용하면 코드의 가독성이 향상됩니다. 또한, 이 절은 ANSI SQL 표준을 따르므로 이식성과 호환성이 좋습니다.

3. 실무에서 구체적으로 사용되는 상황 예측

  • 상황 1: 데이터베이스에서 직원 정보와 부서 정보를 조인해야 하는 경우, 직원 테이블(emp)과 부서 테이블(dept) 간에 공통된 컬럼인 deptno를 기준으로 조인할 수 있습니다.
  • 상황 2: 매출 테이블과 상품 테이블을 조인하여 특정 상품의 매출 데이터를 조회할 때, 공통된 product_id를 이용하여 조인을 수행할 수 있습니다.
  • 상황 3: 대형 프로젝트에서 여러 하위 시스템의 로그 데이터를 분석할 때, 동일한 사용자 ID를 기준으로 로그 테이블과 사용자 정보 테이블을 조인하여 특정 사용자의 활동을 분석할 수 있습니다.

4. 자주 사용되는 윈도우 표시 및 설명

1) USING 절을 이용한 간단한 조인:

  • 공통된 컬럼을 이용하여 두 테이블 간의 데이터를 조인할 때 사용됩니다.
   SELECT e.ename, d.loc 
   FROM emp e JOIN dept d 
   USING (deptno);

2) USING 절과 WHERE 절을 조합한 필터링 조인:

  • USING 절을 통해 조인을 수행하고 WHERE 절을 통해 필터링 조건을 추가합니다.
   SELECT e.ename, d.loc 
   FROM emp e JOIN dept d 
   USING (deptno)
   WHERE e.job = 'SALES';

3) USING 절을 활용한 다중 테이블 조인:

  • USING 절을 사용하여 여러 테이블을 조인할 수 있습니다. 예를 들어, 세 개 이상의 테이블을 조인할 때 동일한 컬럼을 이용해 연속적으로 조인을 수행할 수 있습니다.
   SELECT e.ename, d.loc, s.grade 
   FROM emp e 
   JOIN dept d USING (deptno) 
   JOIN salgrade s ON (e.sal BETWEEN s.losal AND s.hisal);

4) ANSI SQL 표준 조인:

  • ANSI SQL 표준에 따라 USING 절을 사용하여 여러 테이블을 조인할 수 있습니다. 이는 데이터베이스 시스템 간의 호환성을 유지하는 데 유리합니다.
   SELECT e.ename, d.loc, s.grade 
   FROM emp e 
   JOIN dept d USING (deptno) 
   JOIN salgrade s USING (sal);

5. 연습 문제

연습 문제: emp 테이블과 dept 테이블을 deptno를 기준으로 조인하여 SALES 직무를 가진 직원들의 이름과 부서 위치를 조회하는 SQL 쿼리를 작성하세요.

6. 연습 문제 해답 및 테이블 표시

SELECT e.ename AS 이름, d.loc AS 부서위치
FROM emp e 
JOIN dept d USING (deptno)
WHERE e.job = 'SALES';

출력 테이블:

이름부서위치
MARTINCHICAGO
ALLENCHICAGO
TURNERCHICAGO
WARDCHICAGO

7. 응용 문제

응용 문제: emp 테이블과 dept 테이블을 조인하여 각 부서의 위치와 그 부서에 속한 직원의 이름, 직무, 급여를 조회하는 SQL 쿼리를 작성하세요.

8. 응용 문제 해답 및 테이블 표시

SELECT e.ename AS 이름, e.job AS 직업, e.sal AS 급여, d.loc AS 부서위치
FROM emp e 
JOIN dept d USING (deptno);

출력 테이블:

이름직업급여부서위치
KINGPRESIDENT5000NEW YORK
BLAKEMANAGER2850CHICAGO
CLARKMANAGER2450NEW YORK
JONESMANAGER2975DALLAS

9. 전자상거래 업계에서 쓰일 수 있는 경우 예측

전자상거래 시스템에서 주문 테이블과 제품 테이블을 조인하여 특정 제품의 판매 내역을 조회할 때 유용하게 사용될 수 있습니다. 또한, 고객 테이블과 주문 테이블을 조인하여 특정 고객의 주문 내역을 확인할 때도 사용될 수 있습니다.

10. 전자상거래 업계에서 사용할 수 있는 경우 예상 상황 문제 2가지 및 그 경우에 대한 SQL 코드 작성

상황 1: 특정 제품의 최근 1개월간 판매 내역을 조회하려고 합니다. 주문 테이블(orders)과 제품 테이블(products)을 조인하여 제품 ID를 기준으로 특정 제품의 판매 내역을 조회하는 SQL 쿼리를 작성하세요.

SELECT p.product_name, o.order_date, o.quantity
FROM orders o
JOIN products p USING (product_id)
WHERE p.product_id = 'P12345' AND o.order_date >= ADD_MONTHS(SYSDATE, -1);

상황 2: 특정 고객이 주문한 모든 제품의 상세 정보를 조회하려고 합니다. 고객 테이블(customers), 주문 테이블(orders), 그리고 제품 테이블(products)을 조인하여 고객 ID를 기준으로 해당 고객이 주문한 제품 내역을 조회하는 SQL 쿼리를 작성하세요.

SELECT c.customer_name, p.product_name, o.order_date, o.quantity
FROM customers c
JOIN orders o USING (customer_id)
JOIN products p USING (product_id)
WHERE c.customer_id = 'C67890';

11. SQL 코드를 시각적으로 이해하기 쉽도록 테이블 예시 작성

상황 1 테이블:

product_nameorder_datequantity
Product A2024-07-0110
Product A2024-07-055
Product A2024-07-1020

상황 2 테이블:

customer_nameproduct_nameorder_datequantity
John DoeProduct B2024-07-122
John DoeProduct C2024-07-153
John DoeProduct A2024-07-201
Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top