1. 서브쿼리 기본
하나의 쿼리 안에 포함된 또 하나의 쿼리임 → 메인쿼리가 서브쿼리를 포함하는 종속적인 관계
서브쿼리의 특징
•
알려지지 않은 기준을 이용한 검색에 유용
→ ex) 연봉이 상위 5%인 여자. 아직은 누군지 모르지만 기준을 정할때 사용
•
메인 쿼리가 실행되기 이전에 한 번만 실행
→ select문에서 서브쿼리가 먼저 실행된 후 메인쿼리가 실행 됨
•
한 문장에서 여러 번 사용 가능
→ 서브쿼리 안의 서브쿼리를 계속해서 추가 가능
기존의 검색 방법과 서브쿼리를 사용한 예시
•
사원 elice의 급여를 알고 있는 상태에서 더 높은 급여를 받는 사원을 조회
•
사원 elice의 급여를 알지 못해도 검색 가능
서브쿼리 사용시 주의사항
1) 서브쿼리는 괄호와 함께 사용
2) 서브쿼리 안에서 order by 절 사용 불가능
3) 연산자의 오른쪽에 사용되어야 함
4) 오로지 select 문으로만 작성 가능
서브쿼리 기본 문법
2. 서브쿼리 반환에 따른 분류
단일 행 서브쿼리
•
결과가 한 행만 나오는 서브쿼리. 서브쿼리가 결과를 1개의 값만 반환하고, 이 결과를 메인쿼리로 달하는 쿼리
•
단일 행 서브쿼리 기본 문법
사원번호는 기본적으로 1개만 있으므로 한개의 행만 반환함 → 단일 행
•
단일 행 서브쿼리 연산자
다중 행 서브쿼리 정의
•
서브쿼리가 결과를 2개 이상 반환하고, 이 결과를 메인쿼리로 전달하는 쿼리
•
다중 행 서브쿼리 기본 문법
•
다중행 연산자
◦
예시
▪
IN : 가로안에서 1이 하나라도 있으면 됨
▪
ANY < : 가로안에서 최대값을 찾으라는 의미
→ 1,2,3,4에서 가장 큰 것은 4임. 10<4는 거짓이기 때문에 데이터가 나오지 않음
▪
ALL ≥ : 가로안에서 최댓값을 찾으라는 의미
3. 위치에 따른 분류
스칼라 서브쿼리
•
select절에서 사용하는 서브쿼리(where 절이 아니라...)
•
스칼라 서브쿼리는 오로지 한 행만 반환 → 마치 join을 사용한 것과 같은 결과를 나타냄
→ 데이터가 많을때는 join 보다는 스칼라 서브쿼리를 쓰는게 빠를때가 종종 있음













