[sql] 프로시저 호출 시 테이블 관계 설정 방법

데이터베이스에서 프로시저를 호출하여 테이블 간의 관계를 설정하는 방법에 대해 알아보겠습니다.

1. INNER JOIN을 사용하는 방법

INNER JOIN은 두 개 이상의 테이블을 조인하여 관계를 설정하는 방법 중 하나입니다. 프로시저에서 INNER JOIN을 사용하여 테이블 간의 관계를 설정할 수 있습니다.

CREATE PROCEDURE GetOrderDetails
AS
BEGIN
    SELECT Orders.OrderID, Customers.CustomerName, OrderDetails.Quantity
    FROM Orders
    INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
    INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
END

위의 예시에서는 Orders, Customers, OrderDetails 세 개의 테이블을 INNER JOIN하여 관계를 설정한 후 주문 ID(OrderID), 고객 이름(CustomerName), 주문 수량(Quantity)을 반환합니다.

2. FOREIGN KEY를 사용하는 방법

FOREIGN KEY는 테이블 간의 관계를 설정하는데 사용되는 제약 조건입니다. FOREIGN KEY를 이용하여 프로시저에서 테이블 간의 관계를 설정할 수 있습니다.

CREATE PROCEDURE GetOrderDetails
AS
BEGIN
    SELECT Orders.OrderID, Customers.CustomerName, OrderDetails.Quantity
    FROM Orders
    JOIN Customers ON Orders.CustomerID = Customers.CustomerID
    JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
END

위의 예시에서는 Orders 테이블의 CustomerIDCustomers 테이블의 CustomerID와 FOREIGN KEY로 연결되어 있고, Orders 테이블의 OrderIDOrderDetails 테이블의 OrderID와 FOREIGN KEY로 연결되어 있습니다.

3. 서브쿼리를 사용하는 방법

서브쿼리는 하나의 쿼리 안에 또 다른 쿼리를 작성하는 방법입니다. 프로시저에서 서브쿼리를 사용하여 테이블 간의 관계를 설정할 수 있습니다.

CREATE PROCEDURE GetOrderDetails
AS
BEGIN
    SELECT Orders.OrderID, Customers.CustomerName, OrderDetails.Quantity
    FROM Orders, Customers, OrderDetails
    WHERE Orders.CustomerID = (SELECT CustomerID FROM Customers WHERE Customers.CustomerID = Orders.CustomerID)
    AND Orders.OrderID = (SELECT OrderID FROM OrderDetails WHERE OrderDetails.OrderID = Orders.OrderID)
END

위의 예시에서는 서브쿼리를 사용하여 Orders 테이블의 CustomerIDOrderID를 검색한 후, 해당 값을 이용하여 관계를 설정합니다.

참고자료