서브쿼리는 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다.
서브쿼리의 결과 건수가 반드시 1건 이하.
단일 행 비교 연산자( =, <. > <=, >=, <>) 와 함께 사용된다.
서브쿼리 실행 결과가 여러 건.
IN, ALL, ANY, SOME, EXISTS 와 함께 사용된다.
다중 컬럼 서브쿼리는 서브쿼리의 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미한다.
서브쿼리와 메인쿼리에서 비교하고자 하는 컬럼 개수와 컬럼의 위치가 동일해야 한다.
sql server에서는 지원하지 않는 기능이다
SELECT TEAM_ID, PLAYVER_NAME, POSITION, BACK_NO , HEIGHT
FROM PLAYER
WHERE (TEAM_ID, HEIGHT) IN (SELECT TEAM_ID, MIN(HEIGHT)
FROM PLAYER
GROUP BY TEAM_ID)
ORDER BY TEAM_ID, PLAYER_NAME;
서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태. 일반적으로 메인쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할 때 주로 사용된다.
EXISTS 서브쿼리는 항상 연관 서브쿼리로 사용된다.
서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태. 메인쿼리에 값을 제공하기 위한 목적으로 주로 사용된다.
[95번]
다중 컬럼 서브쿼리는 SQL Server에서 지원하지 않는다.
연관 서브쿼리는 서브쿼리가 메인쿼리 컬럼을 포함하고 있는 형태의 서브쿼리이다.
서브쿼리는 단일행 또는 복수행 비교 연산자와 함께 사용할 수 있다.
[99번]
비연관 서브쿼리는 주로 메인쿼리에 값을 제공하기 위해 사용한다.
메인 쿼리의 결과가 서브쿼리로 제공될 수도 있고, 서브 쿼리의 결과가 메인쿼리로 제공될 수도 있다.
SELECT 절에 서브쿼리 사용하기
FROM 절에서 서브쿼리 사용하기
인라인 뷰는 SQL문이 실행될 때만 임시적으로 생성되는 동적인 뷰이다.
독립성, 편리성, 보안성 보장
뷰(View)는 실제 데이터를 가지고 있지 않다.
뷰를 사용하기 위해서 해당 뷰의 이름을 FROM 절에 적어 사용해주면 된다.
[100번]
인라인 뷰: 서브쿼리가 FROM 절에서 안에서 사용되는 경우, 해당 서브쿼리를 '인라인뷰'라고 한다. FROM 절에서 사용된 서브쿼리의 결과가 하나의 테이블에 대한 뷰(View)처럼 사용된다.