서브쿼리
- select 문 안에 다시 select 문이 기술된 형태의 쿼리
- 중첩쿼리라고도 부름
서브쿼리의 종류
- 단일 행 서브쿼리 : 하나의 행을 검색하는 서브쿼리
- 다중 행 서브쿼리 : 하나 이상의 행을 검색하는 서브쿼리
- 다중 열 서브쿼리 : 하나 이상의 열을 검색하는 서브쿼리
단일 행 연산자
=, >, >=, <, <=, <>, !=
- 사용처 : 단일 행 서브쿼리, 다중 열 서브쿼리
다중 행 연산자
IN : 같은 값 IN(10,20) 10이나 20이 포함
NOT IN : 같은 값이 아님 NOT IN(10,20) 10이나 20이 포함되지 않음
EXISTS : 값이 있으면 반환 EXISTS(10) 10이 존재하면 참
ANY : 최소한 하나라도 만족하는 것(OR) ANY(10,20) 10이나 20이 포함
ALL : 모두 만족하는 것(AND) ALL(10,20) 10과 20 포함
- 사용처 : 다중 행 서브쿼리, 다중 열 서브쿼리
단일 행 서브쿼리
- select 문에서 얻은 한 개 행의 결괏값을 메인 쿼리로 전달하는 서브쿼리
ex)
SELECT *
FROM employees A
WHERE A.salary = (
SELECT salary
FROM employees
WHERE last_name = 'De Haan'
);
다중 행 서브쿼리
- 하나 이상의 결과 행을 메인 쿼리에 전달하는 경우에 사용
ex)
SELECT *
FROM employees A
WHERE A.salary IN (
SELECT MIN(salary) 최저급여
FROM employees
GROUP BY department_id
)
ORDER BY A.salary DESC;
다중 열 서브쿼리
- 메인 쿼리 서브쿼리 비교하는 where 조건식에서 비교되는 열이 여러 개일 때 사용
ex)
SELECT *
FROM employees A
WHERE (A.job_id, A.salary) IN (
SELECT job_id, MIN(salary) 그룹별급여
FROM employees
GROUP BY job_id
)
ORDER BY A.salary DESC;
인라인 뷰
- FROM 절 서브쿼리
ex)
SELECT *
FROM employees A,
( SELECT department_id
FROM departments
WHERE department_name = 'IT') B
WHERE A.department_id = B.department_id;
모두의 SQL 누구나 쉽게 배우는 데이터 분석 기초
김도연 지음 길벗
'데이터 베이스' 카테고리의 다른 글
데이터 무결성과 트랜잭션 : 데이터베이스 운영 기본 규칙 (0) | 2021.05.14 |
---|---|
DML : 데이터의 삽입/갱신/삭제 (0) | 2021.05.14 |
ERD : 데이터베이스 개체 설계도, 조인과 집합: 여러 개의 테이블 연결하기 (0) | 2021.05.14 |
함수 : 함수로 데이터를 쉽게 가공하기 (0) | 2021.05.13 |
SELECT : 데이터 조회의 기본 (0) | 2021.05.12 |