서브쿼리는 일반적으로는 WHERE절에서 많이 사용합니다. 하지만 SELECT절에서도 사용하기도 합니다.
FROM절에서도 사용 될때도 있는데 , 그 경우 inline view에 정의된 컬럼만 사용가능합니다.
메인쿼리는 서브쿼리 사용불가합니다!
id가 a1234인 사람 처럼 항상 1개나 0개의 값이 나올때 사용합니다.
단일행은 (=,<,<=,>,>=,<>) 이와 같은 비교 연산자를 사용합니다.
만약 단일행 비교연산자를 사용했는데 결과가 2건 이상이라면
실행은 되지만, Run Time 오류가 납니다.
남자인 사람들만 가져온다 이처럼 여러값이 나오는, 나올 수 있는 값일때 사용합니다.
(IN, ALL, ANY, SOME, EXISTS) 이와 같은 비교 연산자를 사용하고,
임의의 결과 중 하나만 만족해도 참인 값을 가져온다. (OR조건)
카테고리가 화장품 OR 카테고리 화장품의 가격과 같은 값
결과의 모든 값을 만족하는 값을 가져온다.
x >ALL(10,20,50) 라고 한다면 x>50 보다 큰 숫자를 가져옵니다.
결과의 어느 하나의 값이라도 만족하는 값을 가져온다.
x >ANY(10,20,50) 라고 한다면 x>10 보다 큰 숫자를 가져옵니다.
만족하는 값이 존재 여부를 확인하는 것입니다.(참과 거짓 조건 판단용)
EXIST(조건) 조건이 참이면 전체 명단을 출력하고, 조건이 거짓이면 출력하지 않습니다.
참
거짓
서브쿼리 실행 결과 하나의 칼럼을 반환합니다.
서브쿼리 실행 결과 여러 칼럼을 반환합니다.
메인쿼리의 칼럼이 서브쿼리에서 사용된 쿼리입니다.
메인쿼리가 먼저 수행되고, 그 후애 서브쿼리를 수행합니다.
메인쿼리 -> 서브쿼리 정보전달
서브쿼리에서 메인쿼리와 서브쿼리가 같은지 비교합니다.
다중 컬럼 쿼리를 사용할때는 키, 포지션 = 포지션,키 이렇게 오면 안됩니다!
WHERE(카테고리, 가격) = (SELECT 카테고리,가격) 순서가 같이 와야합니다.
단일행, 단일 컬럼으로 함수특성을 가집니다.
테이블과 동일한 형태로 사용가능합니다.
인라인 뷰는 동적 뷰 이고, 일반 뷰는 정적 뷰 입니다.