본문 바로가기
Database/MSSQL

MSSQL 테이블 간 관계 설정과 조인(Join) 활용법

by yazasus 2025. 5. 19.
728x90

MSSQL 테이블 관계 설정과 JOIN 활용법 – 관계형 데이터 설계부터 실전 쿼리까지

관계형 데이터베이스의 핵심은 테이블 간 관계를 정의하고, 이를 활용한 JOIN 쿼리를 효과적으로 사용하는 것입니다.
이 글에서는 FOREIGN KEY로 관계를 설정하는 방법과, 다양한 종류의 JOIN을 T-SQL로 어떻게 활용하는지를 설명합니다.

---

1. 테이블 간 관계 설정 (FOREIGN KEY)

FOREIGN KEY는 한 테이블의 열이 다른 테이블의 기본 키를 참조하게 함으로써, 데이터 간의 연결을 보장합니다.


CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    UserName NVARCHAR(100)
);

CREATE TABLE Orders (
    OrderId INT PRIMARY KEY,
    UserId INT,
    OrderDate DATETIME,
    CONSTRAINT FK_Orders_Users FOREIGN KEY (UserId)
        REFERENCES Users(UserId)
);
  • Users → Orders 관계는 1:N(일대다) 관계
  • Order 테이블의 UserId는 Users의 UserId를 참조
---

2. JOIN의 기본 개념

JOIN은 두 개 이상의 테이블을 조건에 따라 연결하여 결과를 반환하는 SQL 연산입니다.
대표적인 JOIN 유형은 다음과 같습니다:

  • INNER JOIN: 두 테이블에 모두 존재하는 데이터만
  • LEFT JOIN: 왼쪽 테이블의 모든 데이터 + 일치하는 오른쪽 데이터
  • RIGHT JOIN: 오른쪽 테이블의 모든 데이터 + 일치하는 왼쪽 데이터
  • FULL OUTER JOIN: 양쪽 모두의 모든 데이터 + 일치하는 데이터
---

3. 실전 JOIN 예제

▶ INNER JOIN

양쪽 테이블 모두에 데이터가 있는 경우만 조회:


SELECT o.OrderId, o.OrderDate, u.UserName
FROM Orders o
INNER JOIN Users u ON o.UserId = u.UserId;

▶ LEFT JOIN

모든 주문과, 주문한 사용자의 이름 (사용자가 없으면 NULL):


SELECT o.OrderId, o.OrderDate, u.UserName
FROM Orders o
LEFT JOIN Users u ON o.UserId = u.UserId;

▶ RIGHT JOIN

모든 사용자와, 그 사용자가 한 주문 (주문 없으면 NULL):


SELECT o.OrderId, o.OrderDate, u.UserName
FROM Orders o
RIGHT JOIN Users u ON o.UserId = u.UserId;

▶ FULL OUTER JOIN

사용자 또는 주문 중 어느 한 쪽에만 있어도 모두 조회:


SELECT o.OrderId, o.OrderDate, u.UserName
FROM Orders o
FULL OUTER JOIN Users u ON o.UserId = u.UserId;
---

4. 별칭과 JOIN 조건을 활용한 실무 최적화


SELECT o.OrderId, u.UserName, p.ProductName
FROM Orders o
JOIN Users u ON o.UserId = u.UserId
JOIN OrderItems oi ON o.OrderId = oi.OrderId
JOIN Products p ON oi.ProductId = p.ProductId;

위 예제는 4개 테이블을 JOIN하여 주문 내역과 제품명을 함께 조회하는 실전 쿼리입니다.

---

5. 실무 팁 💡

  • JOIN은 조건이 명확하지 않으면 카르테시안 곱(모든 조합)이 발생하므로 항상 ON 절을 정확히 설정하세요.
  • 대용량 테이블 JOIN 시, 인덱스를 활용한 실행 계획 분석을 통해 성능을 확인하세요.
  • FOREIGN KEY 제약조건은 JOIN뿐만 아니라 데이터 무결성을 유지하는 데 필수입니다.
---

마무리

테이블 관계 설정과 JOIN은 MSSQL에서 가장 핵심적인 설계 및 쿼리 개념입니다.
JOIN 유형과 조건을 명확히 이해하면 복잡한 데이터를 효율적으로 연결해 조회할 수 있습니다.
관계형 모델을 구성할 때는 FK 설정과 JOIN 설계를 함께 고려해야 성능과 유지보수 면에서 유리합니다.

728x90