서브쿼리 (SubQuery)

 - SQL문 안에 포함된 또 다른 SQL문.

 - 메인쿼리와 서브쿼리 관계는 주종 관계이다.

 - 서브쿼리에 사용되는 컬럼 정보는 메인쿼리의 컬럼 정보를 사용할 수 있으나 역은 성립하지 않는다.

 - 알려지지 않은 기준을 위한 검색을 위해 사용한다.

 

 서브쿼리 반환값에 따른 유형

 - 단일 행 (Single Row) 서브쿼리 : 서브쿼리 결과가 1건 이하인 서브쿼리, 단일 행 비교 연산자(=, <, > 등) 사용

 - 다중 행 (Multiple Row) 서브쿼리 : 서브쿼리 결과가 여러 건인 서브쿼리, 다중 행 비교 연산자(IN, ALL, ANY, SOME, EXISTS) 사용

 - 다중 컬럼 (Multiple Column) 서브쿼리 : 서브쿼리 결과가 여러 컬림

 

 

 예시

 

member table

 

employee table

 

 

 단일 행 서브쿼리 

 - 서브쿼리 결과값이 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

+ Recent posts