서브쿼리
하나의 SQL문 안에 포함돼있는 또 다른 SQL문.
알려지지 않은 기준을 이용한 검색을 할 때 사용.
주의사항
- 서브쿼리를 괄호
()
로 감싸서 사용. - 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능.
단일 행 비교 연산자는 서브쿼리 결과가 반드시 1건 이하.
복수 행은 상관 없음. - 서브쿼리에서는
ORDER BY
사용 불가.
ORDER BY
절은SELECT
절에서 오직 한 개만 가능하므로
메인쿼리의 마지막 문장에 위치해야 함.
e.g.) 사원 테이블(관리자-사원), 조직 테이블(상위-하위)
1. 단일 행 서브 쿼리
서브쿼리의 결과 건수가 2건 이상 반환 시
런타임에서 오류 발생.
(이건 컴파일 타임에선 알 수 없음.)
2. 다중 행 서브 쿼리
서브쿼리 결과가 2건 이상 반환 가능성 있다면
반드시 다중 행 비교 연산자(IN
, ALL
, ANY
, SOME
)와 사용해야 함.
3. 다중 칼럼 서브 쿼리
서브쿼리 결과로 여러 개 칼럼이 반환되어
메인쿼리의 조건과 동시에 비교되는 것.
4. 연관 서브 쿼리
서브쿼리 내에 메인쿼리 칼럼이 사용된 서브쿼리.
5. 기타
서브쿼리 내에 메인쿼리 칼럼이 사용된 서브쿼리.
6. 뷰
뷰는 실제 데이터를 가지고 있지 않다.
단지, 뷰 정의View Definition만을 가짐.
“가상 테이블”이라고도 함.
장점
- 독립성
- 편리성
- 보안성