마케팅 이야기

[SQL] 8. 서브쿼리

모리선생 2024. 3. 5. 07:00
728x90

목표: 서브커리가 무엇인지 확인하고 이를 활용한다.

더보기

서브쿼리의 특징

 

1. 소괄호를 사용한다.

2. 쿼리 실행전 1번만 실행된다.

3. 서브쿼리는 비교 연산자 사용시 오른쪽에 적는다.

4. ORDER BY문을 내부에서 사용할 수 없다.

다중 행 연산자 설명
IN 결과에 존재하는 임의의 값과 같은 조건 검색
ANY 존재하는 어느 하나의 값이라도 만족하는 조건 검색
EXISTS 결과를 만족하는 값이 존재하는지 확인
ALL 존재하는 모든 값을 만족하는 조건 검색

 

단일 행 서브 쿼리

더보기

SELECT [열 이름]

FROM [테이블]

WHERE [열] = (SELECT [열] FROM [테이블])

예를 들어,

SELECT * FROM company

WHERE symbol = (SELECT symbol FROM company WHERE symbol IN ('APPL'))

 

다중 행 서브 쿼리

더보기

SELECT [열 이름]

FROM [테이블]

WHERE [열] IN (SELECT [열] FROM [테이블])

IN 문

 

예를 들어,

SELECT * FROM company

WHERE symbol IN (SELECT FROM company WHERE symbol IN ('MSFT', 'AMD', 'AAPL'))

 

ANY 문

 

예를 들어,

SELECT * FROM company

WHERE symbol = ANY (

 SELECT symbol FROM company

 WHERE symbol IN ('MSFT', 'AMD', 'APPL')

)

 

EXISTS문, NOT EXISTS 문

 

예를 들어,

SELECT * FROM company

WHERE EXISTS (

 SELECT symbol FROM company

 WHERE symbol IN ('MSFT', 'AMD', 'APPL')

)

 

ALL문

모든 값을 만족하는 조건을 주 쿼리에서 검색해 결과 반환

 

예를 들어,

SELECT * FROM company

WHERE symbol = ALL (

 SELECT symbol FROM company

 WHERE symbol IN ('MSFT', 'AMD', 'AAPL')

)

 

 

FROM 문에서 서브 쿼리를 사용해보고 싶다면

: 장점은 쿼리를 논리적으로 격리 할 수 있다. 보통 인라인 뷰라고 한다.

 

더보기

SELECT [열 이름]

FROM [테이블] AS a

INNER JOIN (SELECT [열] FROM [테이블] WHERE [열] = [값]) AS b ON [a.열] = [b.열]

WHERE [열] = [값]

 

SELECT 문에서 서브 쿼리 사용해보고 싶다면

: 서브쿼리는 집계 함수 (SUM, COUNT, MIN, MAX)와 사용하지 않는 것이 좋으며, 이를 스칼라 서브 쿼리 라고 한다.

더보기

SELECT [열 이름]

 (SELECT <집계 함수> [열 이름] FROM [테이블 2]

 WHERE [테이블 2.열] = [테이블 1. 열]) as Alias

FROM [테이블 1]

WHERE [조건]

728x90

'마케팅 이야기' 카테고리의 다른 글

[MYSQL] 문자열 함수 II  (0) 2024.03.11
[SQL] 9. CTE문  (0) 2024.03.07
[SQL] 7. 조인이란  (0) 2024.03.03
[SQL] 6. CREAT 문  (0) 2024.03.01
[SQL] 5. GROUP BY 그리고 HAVING 문  (0) 2024.02.28