SQL 이것저것

[SQL] 서브쿼리

agingcurve 2022. 8. 14. 14:11
반응형

서브쿼리 정의

하나의 쿼리 안에 포함된 또 하나의 쿼리 메인 쿼리가 서브쿼리를 포함하는 종속적인 관계

 

특징

알려지지 않은 기준을 이용한 검색

메인 쿼리 실행 이전 한 번만 실행

한 문장에 여러번 사용가능

 

기존의 검색 방법

사원  급여를 알고 있는 상태에서 더 높은 급여를 받는 사원을 조회

SELECT * FROM employee
WHERE 급여 > 2500;

사원 mj의 급여를 알지 못해도 검색 가능

SELECT * FROM employee
WHERE 급여 >
(SELECT 급여 FROM employee WHERE 이름=‘mj’);

 

 

서브쿼리 사용시 주의사항

- 서브쿼리는 괄호와 함께 사용되어야 한다.

- 서브쿼리 안에서 ORDER BY 절은 사용할 수 없음

- 서브쿼리는 연산자의 오른쪽에 사용되어야 함

- 서브쿼리는 오로지 SELECT 문으로 작성 가능

 

서브쿼리 기본문법

SELECT * FROM employee
WHERE 급여 >
(SELECT 급여 FROM employee WHERE 이름=‘elice’);

 

단일 행 서브쿼리

결과가 한 행만 나오는 서브쿼리, 서브쿼리 결과를 1개만 반환하고 이 결과를 메인쿼리로 전달

 

 

단일 행 서브쿼리 기본 문법

 - 사원번호는 기본적으로 1개만 있으므로 한 개의 행만 반환함 = 단일 행

SELECT * FROM employee
WHERE 급여 >
(SELECT 급여 FROM employee WHERE 사원번호 = 1);

 

 

단일 행 서브쿼리 연산자

 

다중 행 서브쿼리 정의

서브쿼리 결과를 2개 이상 반환, 이 결과를 메인쿼리로 전달

 

다중 행 서브쿼리 기본 문법

SELECT * FROM employee
WHERE 급여 IN (
SELECT max(급여) FROM employee GROUP BY 부서번호);

 

 

다중 행 연산자

 

일반적인 서브쿼리 형태

WHERE 절에 사용되는 서브쿼리 가장 일반적인 형태의 서브쿼리

SELECT * FROM employee
WHERE 급여 >
(SELECT 급여 FROM employee WHERE 이름=‘mj’);

 

스칼라 서브쿼리

SELECT 절에서 사용하는 서브쿼리 스칼라 서브쿼리는 오로지 한 행만 반환함

JOIN과 같은 결과를 반환

SELECT students.name, (
SELECT math
FROM middle_test as m
WHERE m.student_id = students.student_id
) AS middle_avg
FROM students;

 

'SQL 이것저것' 카테고리의 다른 글

[SQL] 계층형 질의  (0) 2022.08.30
[SQL] Standard SQL  (2) 2022.08.30
[SQL] SQL 함수  (0) 2022.08.12
[SQL] DML(데이터 조작어) 다루기  (0) 2022.08.11
[SQL] SQL 데이터 다루기  (0) 2022.08.05