서브쿼리 (SubQuery)
- SQL문 안에 포함된 또 다른 SQL문.
- 메인쿼리와 서브쿼리 관계는 주종 관계이다.
- 서브쿼리에 사용되는 컬럼 정보는 메인쿼리의 컬럼 정보를 사용할 수 있으나 역은 성립하지 않는다.
- 알려지지 않은 기준을 위한 검색을 위해 사용한다.
서브쿼리 반환값에 따른 유형
- 단일 행 (Single Row) 서브쿼리 : 서브쿼리 결과가 1건 이하인 서브쿼리, 단일 행 비교 연산자(=, <, > 등) 사용
- 다중 행 (Multiple Row) 서브쿼리 : 서브쿼리 결과가 여러 건인 서브쿼리, 다중 행 비교 연산자(IN, ALL, ANY, SOME, EXISTS) 사용
- 다중 컬럼 (Multiple Column) 서브쿼리 : 서브쿼리 결과가 여러 컬림
예시
단일 행 서브쿼리
- 서브쿼리 결과값이 2건 이상일 경우 오류 발생
1
2
3
4
5
6
7
8
9
10
|
-- 단일 행 서브쿼리 예시 --
SELECT *
FROM employee
WHERE member_id = (
SELECT id
FROM member
WHERE id = 'id001')
-- 서브쿼리 결과값이 2건 이상일 경우 오류 발생 --
|
다중 행 서브쿼리
IN | 서브쿼리 결과 값 중에 동일한 조건을 만족 |
ALL | 서브쿼리 결과 값 중에 모든 조건을 만족 |
ANY | 서브쿼리 결과 값 중에 어느 하나라도 조건을 만족 |
SOME | ANY와 동일 |
EXISTS | 서브쿼리 결과 값을 만족하는 조건이 있는지 여부 확인 |
1
2
3
4
5
6
7
8
|
-- 다중 행 서브쿼리 예시 --
SELECT *
FROM employee
WHERE member_id IN (
SELECT id
FROM member
WHERE gender = '남')
|
'교육 > DBMS' 카테고리의 다른 글
#112 DBMS 기본 SQL DDL (0) | 2019.10.25 |
---|---|
#92 DBMS MySQL 월별 컬럼 합산 값 구하기 (0) | 2019.09.25 |
#87 DBMS MySQL 차집합 (0) | 2019.09.18 |
#61 DBMS MySQL 샘플 DB 생성 (0) | 2019.08.07 |
#55 DBMS 데이터베이스 트랜잭션 (0) | 2019.08.05 |