SQL

SQL 서브쿼리

retill28 2024. 8. 8. 22:50

 

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