이제 EQUI JOIN을 사용하여 여러 테이블의 데이터를 조인하고 출력하는 방법에 대해 설명드리겠습니다.
1. 핵심 원리
EQUI JOIN은 두 개 이상의 테이블을 조인할 때 사용하는 기본적인 조인 방식 중 하나로, 일반적으로 서로 다른 테이블에서 동일한 값을 가진 열을 기준으로 데이터를 결합합니다. 조인 조건은 =
연산자를 사용하여 지정됩니다.
2. 실무에서 쓰이는 이유
실무에서 EQUI JOIN은 다음과 같은 이유로 사용됩니다:
- 데이터 통합: 여러 테이블에 분산된 데이터를 하나의 결과 집합으로 결합하여 의미 있는 정보를 생성할 수 있습니다.
- 데이터 분석: 서로 관련된 데이터가 여러 테이블에 분산되어 있을 때 이를 결합하여 분석하기 위해 사용됩니다.
3. 실무에서 구체적으로 사용되는 상황
EQUI JOIN은 다음과 같은 상황에서 자주 사용됩니다:
- 고객 정보와 주문 정보 결합: 고객 정보 테이블과 주문 정보 테이블을 결합하여 특정 고객의 주문 내역을 조회할 때.
- 제품 정보와 재고 정보 결합: 제품 정보 테이블과 재고 정보 테이블을 결합하여 각 제품의 현재 재고 상태를 파악할 때.
예상 상황 예측:
- 예시 1: 고객 테이블과 주문 테이블을 조인하여 특정 고객의 주문 내역을 조회.
- 예시 2: 직원 테이블과 부서 테이블을 조인하여 각 직원의 부서 위치를 조회.
4. 자주 사용되는 윈도우 방식 및 설명
EQUI JOIN에서는 일반적으로 WHERE
절을 사용하여 조인 조건을 지정하며, 조인할 테이블의 열 이름을 명시적으로 지정합니다. 복잡한 쿼리에서는 별칭을 사용하여 코드의 가독성을 높일 수 있습니다.
- 기본 EQUI JOIN
- 설명: 두 테이블 간의 동일한 열 값을 기준으로 데이터를 결합합니다.
- 사용 예시:
sql
SELECT emp.ename, dept.loc
FROM emp, dept WHERE emp.deptno = dept.deptno;
- 별칭 사용
- 설명: 테이블에 별칭을 부여하여 코드 가독성을 높이고, 동일한 열 이름 충돌을 방지합니다.
- 사용 예시:
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. 전자상거래 업계에서의 사용 예시
사용될 수 있는 경우 예측:
- 주문 내역 분석: 고객 테이블과 주문 테이블을 조인하여 고객별 주문 내역을 분석할 때.
- 재고 관리: 제품 테이블과 재고 테이블을 조인하여 제품별 재고 현황을 분석할 때.
예상 상황 문제:
- 고객 테이블과 주문 테이블을 조인하여 특정 고객의 최근 주문 내역을 조회하는 SQL 쿼리를 작성하시오.
- 제품 테이블과 재고 테이블을 조인하여 재고가 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;
예시 테이블:
name | order_id | order_date |
---|---|---|
Alice | 1001 | 2024-08-01 |
Bob | 1002 | 2024-07-31 |
Charlie | 1003 | 2024-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_name | quantity |
---|---|
Product A | 0 |
Product B | 0 |