본문 바로가기
Database/SQL

상관쿼리와 비상관쿼리 - MariaDB/SQL

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

비상관쿼리

  • 메인쿼리와 서브쿼리 간에 데이터 종속성이 없는 쿼리를 나타낸다.
  • 비상관쿼리는 독립적으로 실행되며, 메인쿼리에 영향을 미치지 않음.
  • 주로 'IN', 'NOT IN', 'EXISTS', 'NOT EXISTS'등 연산자와 사용
SELECT COUNT(*) FROM customers
WHERE Country = (SELECT Country FROM suppliers WHERE SupplierID =1);

SELECT COUNT(*) FROM customers
WHERE Country = (SELECT Country FROM suppliers WHERE SupplierID =2);
  • 위와 같이 서브쿼리가 메인쿼리와는 상관없이 독립적으로 수행될 수 있는 쿼리를 비상관쿼리라고 말함.

상관쿼리

  • 메인쿼리와 서브쿼리 간에 종속성이 있는 쿼리를 나타낸다.
SELECT
    s.SupplierID, (SELECT COUNT(*)
                   FROM customers
                   WHERE customers.Country = s.Country)
        AS `Number Of Customers`
FROM suppliers s;
  • 위 예제를 보면 서브쿼리는 메인쿼리 없이는 독립적으로 수행될 수 없다. (서브쿼리 안에 메인 쿼리의 별칭 s가 필요하기 때문)
-- 예) 각 직원보다 나이가 많은 직원의 수 (lastName, NumberOfEmp)
SELECT LastName,(SELECT COUNT(*)
        FROM employees e1
        WHERE e1.BirthDate > e2.BirthDate) FROM employees e2;
  • 위 예제는 각 직원보다 나이가 많은 직원의 수를 구하는 쿼리문
  • 이 예제 또한 마찬가지로 서브쿼리가 메인 쿼리 없이 독립적으로 수행할 수 없다. (e2를 사용해야하기 때문)
반응형

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

정규화 Normalization (제 1~3 정규화)  (0) 2023.10.13
서브 쿼리 - MariaDB/SQL  (0) 2023.10.13
MariaDB /SQL - 문법 모음  (0) 2023.10.13