반응형
비상관쿼리
- 메인쿼리와 서브쿼리 간에 데이터 종속성이 없는 쿼리를 나타낸다.
- 비상관쿼리는 독립적으로 실행되며, 메인쿼리에 영향을 미치지 않음.
- 주로 '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 |