본문 바로가기
Database/SQL

서브 쿼리 - MariaDB/SQL

by 재성스 2023. 10. 13.
반응형

서브 쿼리란?

  • 하나의 SQL문 안에 포함되어 있는 또다른 SQL문을 말함.
  • 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적인 관계
  • 메인 쿼리를 외부 쿼리라고도 부르며, 서브 쿼리를 내부쿼리라고도 부름

서브쿼리 예시

SELECT SupplierID, SupplierName FROM suppliers
WHERE SupplierID = (SELECT SupplierID FROM products WHERE ProductName = 'tofu');
  • 위 예제는 product테이블의 ProductName 이 'tofu'라는 SupplierID를 서브쿼리에서 반환하고.
  • 메인 쿼리의 where절에 대입하는 예제.
SELECT OrderDate FROM orders
WHERE CustomerID IN (SELECT CustomerID FROM customers WHERE Country = 'mexico');
  • 위 예시는 customers 테이블의 Country가 'mexico'인 CustomerID를 서브쿼리에서 반환하고
  • 메인쿼리 where 절에 대입하여 해당 CustomerId로 주문한 날짜를 검색하는 쿼리문
SELECT OrderID, OrderDate FROM orders
WHERE OrderID IN (SELECT OrderID FROM orderdetails
                  WHERE ProductID IN (SELECT ProductID FROM products WHERE CategoryID = 1));
  • 이중 서브쿼리를 사용한 예제.
    1. (2번 서브쿼리)products 테이블의 categoryId가 1번인 ProductId를 반환
    1. (1번 서브쿼리)반환된 ProductId를 orderdetails의 where절에 대입하여 해당 productID의 OrderId를 반환
    1. (메인쿼리) 반환된 OrderId를 가진 레코드의 OrderID와 OrderDate를 반환

서브 쿼리를 이용한 테이블의 분리, 복사

INSERT INTO customers (CustomerName, Address, Country)
    (SELECT SupplierName, Address, Country FROM suppliers);

INSERT INTO customers (CustomerName, Address, Country)
    (SELECT ContactName, City, Phone FROM suppliers);
  • customers 테이블의 컬럼에 suppliers의 레코드 대입
  • 주의할 점은 '메인쿼리'의 컬럼 갯수와 '서브쿼리'의 컬럼 갯수가 일치해야한다.
반응형

'Database > SQL' 카테고리의 다른 글

정규화 Normalization (제 1~3 정규화)  (0) 2023.10.13
상관쿼리와 비상관쿼리 - MariaDB/SQL  (2) 2023.10.13
MariaDB /SQL - 문법 모음  (0) 2023.10.13