SQL EQUI JOIN으로 여러 테이블 데이터 결합

이제 EQUI JOIN을 사용하여 여러 테이블의 데이터를 조인하고 출력하는 방법에 대해 설명드리겠습니다.

1. 핵심 원리

EQUI JOIN은 두 개 이상의 테이블을 조인할 때 사용하는 기본적인 조인 방식 중 하나로, 일반적으로 서로 다른 테이블에서 동일한 값을 가진 열을 기준으로 데이터를 결합합니다. 조인 조건은 = 연산자를 사용하여 지정됩니다.

2. 실무에서 쓰이는 이유

실무에서 EQUI JOIN은 다음과 같은 이유로 사용됩니다:

  • 데이터 통합: 여러 테이블에 분산된 데이터를 하나의 결과 집합으로 결합하여 의미 있는 정보를 생성할 수 있습니다.
  • 데이터 분석: 서로 관련된 데이터가 여러 테이블에 분산되어 있을 때 이를 결합하여 분석하기 위해 사용됩니다.

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

EQUI JOIN은 다음과 같은 상황에서 자주 사용됩니다:

  • 고객 정보와 주문 정보 결합: 고객 정보 테이블과 주문 정보 테이블을 결합하여 특정 고객의 주문 내역을 조회할 때.
  • 제품 정보와 재고 정보 결합: 제품 정보 테이블과 재고 정보 테이블을 결합하여 각 제품의 현재 재고 상태를 파악할 때.

예상 상황 예측:

  • 예시 1: 고객 테이블과 주문 테이블을 조인하여 특정 고객의 주문 내역을 조회.
  • 예시 2: 직원 테이블과 부서 테이블을 조인하여 각 직원의 부서 위치를 조회.

4. 자주 사용되는 윈도우 방식 및 설명

EQUI JOIN에서는 일반적으로 WHERE 절을 사용하여 조인 조건을 지정하며, 조인할 테이블의 열 이름을 명시적으로 지정합니다. 복잡한 쿼리에서는 별칭을 사용하여 코드의 가독성을 높일 수 있습니다.

  1. 기본 EQUI JOIN
  • 설명: 두 테이블 간의 동일한 열 값을 기준으로 데이터를 결합합니다.
  • 사용 예시:
    sql
  • SELECT emp.ename, dept.loc
  • FROM emp, dept WHERE emp.deptno = dept.deptno;
  1. 별칭 사용
  • 설명: 테이블에 별칭을 부여하여 코드 가독성을 높이고, 동일한 열 이름 충돌을 방지합니다.
  • 사용 예시:
    sql SELECT e.ename, d.loc FROM emp e, dept d WHERE e.deptno = d.deptno;

5. 연습 문제

문제 1:

customer 테이블과 orders 테이블을 조인하여 각 고객의 주문 내역을 조회하는 SQL 쿼리를 작성하시오.

  • customer 테이블 열: customer_id, name
  • orders 테이블 열: order_id, customer_id, order_date

문제 2:

products 테이블과 inventory 테이블을 조인하여 각 제품의 재고 상태를 조회하는 SQL 쿼리를 작성하시오.

  • products 테이블 열: product_id, product_name
  • inventory 테이블 열: product_id, quantity

6. 연습 문제 해답

해답 1:

SELECT c.name, o.order_id, o.order_date
FROM customer c, orders o
WHERE c.customer_id = o.customer_id;

해답 2:

SELECT p.product_name, i.quantity
FROM products p, inventory i
WHERE p.product_id = i.product_id;

7. 응용 문제

문제 1:

employees 테이블과 departments 테이블을 조인하여 각 직원의 부서 이름을 조회하는 SQL 쿼리를 작성하시오.

  • employees 테이블 열: employee_id, name, dept_id
  • departments 테이블 열: dept_id, dept_name

문제 2:

students 테이블과 courses 테이블을 조인하여 각 학생이 수강 중인 과목을 조회하는 SQL 쿼리를 작성하시오.

  • students 테이블 열: student_id, student_name
  • courses 테이블 열: course_id, course_name

8. 응용 문제 해답

해답 1:

SELECT e.name, d.dept_name
FROM employees e, departments d
WHERE e.dept_id = d.dept_id;

해답 2:

SELECT s.student_name, c.course_name
FROM students s, courses c
WHERE s.course_id = c.course_id;

9. 전자상거래 업계에서의 사용 예시

사용될 수 있는 경우 예측:

  • 주문 내역 분석: 고객 테이블과 주문 테이블을 조인하여 고객별 주문 내역을 분석할 때.
  • 재고 관리: 제품 테이블과 재고 테이블을 조인하여 제품별 재고 현황을 분석할 때.

예상 상황 문제:

  1. 고객 테이블과 주문 테이블을 조인하여 특정 고객의 최근 주문 내역을 조회하는 SQL 쿼리를 작성하시오.
  2. 제품 테이블과 재고 테이블을 조인하여 재고가 0인 제품을 조회하는 SQL 쿼리를 작성하시오.

SQL 코드 및 시각적 예시

문제 1 SQL 코드:

SELECT c.name, o.order_id, o.order_date
FROM customer c, orders o
WHERE c.customer_id = o.customer_id
ORDER BY o.order_date DESC
FETCH FIRST 10 ROWS ONLY;
예시 테이블:
nameorder_idorder_date
Alice10012024-08-01
Bob10022024-07-31
Charlie10032024-07-30

문제 2 SQL 코드:

SELECT p.product_name, i.quantity
FROM products p, inventory i
WHERE p.product_id = i.product_id AND i.quantity = 0;
예시 테이블:
product_namequantity
Product A0
Product B0
Posts created 411

Related Posts

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

Back To Top