SQL의 쿼리는
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
순으로 이루어져 있다.
이 중에서 GROUP BY를 제외하고 모든 절에 쿼리를 넣을 수 있다.
즉, 쿼리 안에 쿼리가 들어갈 수 있다.
이것을 바로 서브쿼리 라고 한다.
서브쿼리는 반드시 괄호 안에 있어야 하고,
INSERT, UPDATE, DELETE 절에도 사용가능하다.
1. SELECT에서의 서브쿼리
- 스칼라 서브 쿼리라고도 한다.
- SELECT절의 서브 쿼리는 반드시 결과값이 하나의 값이어야 한다.
-- 모델명 ABC123의 번호, 이름, 색을 가져와주세요
SELECT number, name,
(SELECT color FROM carInfo WHERE number = 25) AS color
FROM modelList
WHERE name = ‘ABC123’;
2. FROM에서의 서브쿼리
- 인라인 뷰 서브쿼리라고도 한다.
- FROM절의 서브쿼리는 반드시 결과값이 하나의 테이블이어야 한다.
- FROM절의 서브쿼리로 만들어진 결과는 반드시 AS로 별명을 가져야한다.
SELECT number, weight_rank
FROM (
SELECT number, rank() OVER(ORDER BY weight DESC) AS weight_rank
FROM ability) AS A
WHERE weight_rank= 3;
3. WHERE절의 서브쿼리
- 중첩 서브쿼리
- WHERE절의 서브 쿼리는 반드시 결과값이 하나의 컬럼이어야 한다. ( EXISTS 제외)
- <, >, = 등의 연산자와 함께 사용한다. 다른 연산자들도 있다.
SELECT number
FROM carInfo
WHERE weight < (SELECT AVG(height) FROM ability);
- 연산자의 예시로는 IN(결과내의 있다), ALL(모든 결과값보다~), ANY(결과값 중 하나라도~), EXISTS(결과값이 존재한다)가 있다.
- < ALL은 서브쿼리 결과의 최솟값보다 작은가, >ALL은 서브쿼리 결과의 최댓값보다 큰가 확인한다.
- < ANY는 서브쿼리의 최댓값보다 작은가, > ANY는 서브쿼리의 최솟값보다 큰가 확인한다.
- EXIST는 True, False로 결과를 반환한다.
'SQL' 카테고리의 다른 글
SQL 윈도우 함수 (0) | 2024.08.15 |
---|---|
SQL 명령어 2 (0) | 2024.08.08 |
SQL 함수 (0) | 2024.08.01 |
SQL 쿼리 문법 (0) | 2024.08.01 |
SQL 명령어의 종류 (1) | 2024.08.01 |