서브쿼리란 ? SELECT 문 안에 SELECT 문이 있는 형태, 하위 SELECT 문이라고 이해하면 쉽다. 서브쿼리의 결과를 상위 SELECT 문으로 올리는 구조여서 중첩된 쿼리라고도 하며 서브쿼리의 결과들로 SELECT 문의 조건으로 사용된다. 서로 다른 테이블의 데이터 값들을 추출하거나 조회할 때 유용하며 반복을 줄여서 효율적으로 질의문 작성이 가능하다.
주의할 점은
1) 서브쿼리는 괄호로 감싸서 사용해야하며 EX ) ENAME ,JOB FROM EMP WHERE SAL < (SELECT ROUND(AVG(SAL)) FROM EMP) ;
2) 단일 행 또는 복수행 비교 연산자와 함께 사용이 가능하다
3) ORDER BY를 사용할 수 없다
서브쿼리를 사용할 수 있는 곳은
- SELECT 절
- FROM 절
- WHERE 절
- HAVING 절
- ORDER BY 절
- INSERT 문 VALUES 절
- UPDATE 문 SET 절
- 단일 행 서브쿼리
: 비교할 결과 및 반환값이 1:1 관계이며 서브쿼리가 단일 행 비교 연산자(=,<,>...)와 사용할 때는 서브쿼리의 결과 건수가 반드시 1 이상이여야 하고 2 이상일 경우 오류가 발생한다.
- 다중 행 서브쿼리
: 서브쿼리의 결과가 2 이상 반환되면 반드시 다중 행 비교 연산자와 함께 사용(IN, ALL, ANY, SOME)
- 다중 칼럼 서브쿼리
: 서브쿼리 결과로 다중의 칼럼을 반환 후 상위 쿼리의 조건과 동시에 비교
- 연관 서브쿼리
: 서브쿼리 내 메인쿼리 컬럼이 사용된 서브쿼리
- SELECT 절에 사용하는 서브쿼리
: 스칼라 서브 쿼리, , 한 행 한 컬럼만 반환한다.
- FROM 절에 사용하는 서브쿼리
: 인라인 뷰라고 하며 동적으로 생성된 테이블처럼 사용하며 SQL 문이 실행될 때 생기는 임시적인 테이블로 데이터베이스에 해당 정보가 저장되지 않는다.
- HAVING 절에 사용하는 서브쿼리
: 그룹함수와 함께 사용될 때 그룹핑 결과에 조건을 주기 위해 사요
- UPDATE문의 SET 절에서 사용
- INSERT 문의 VALUES 절에서 사용
'IT 끄적이기 > 업무(SeAH - MES)' 카테고리의 다른 글
# 12, 프로시저와 함수 (0) | 2020.05.17 |
---|---|
#11, PL/SQL (0) | 2020.05.17 |
#9 SQL, 함수, JOIN (0) | 2020.05.14 |
#8 DBMS/관계형데이터베이스 (0) | 2020.05.14 |
#7 자재관리 설비관리 (0) | 2020.05.13 |