SUBQUERY
기본 개념
서브쿼리는 한 문장의 절 안에 포함 된 또 하나의 문장이다. 서브쿼리를 포함하고 있는 쿼리문을 메인쿼리라 하고 포함된 또 하나의 쿼리를 서브쿼리라 한다. 서브쿼리는 메인쿼리가 실행되기 이전에 한 번만 실행된다.
서브쿼리 사용시 주의사항
- 반드시 where절에, 비교연산자의
오른쪽에 위치해야 함.
- 서브쿼리라는
것을 알리기 위해 괄호로 묶어야 함.
- 서브쿼리
절 안에 order
by절이
들어가면 안됨.
서브쿼리가 가지는 장점은 한번 디스크에서 읽어온 데이터를 메모리 안에서 가공해서 사용할 수 있도록 도와준다.
즉, 동일한 데이터를 다시 한번 이용하여 복잡한 가공에도 물리적인 I/O를 줄여준다
단일 행 서브쿼리(스칼라
서브쿼리)
가장 기본적인 서브쿼리로서,
'=' 연산자를
사용한 서브쿼리.
다중행 서브쿼리(멀티로우 서브쿼리)
서브쿼리에서 반환되는 결과 행이 하나 이상일 때 사용하는 서브쿼리. 다중행 비교
연산자 사용 가능.
다중컬럼 서브쿼리
하나 이상의 컬럼을 메인쿼리로 반환.
상호관련 서브쿼리
서브쿼리와 메인쿼리 간에 결과값을 서로 주고받는 식으로 처리되는 서브쿼리.
SELECT Name, height FROM SUBQUERY WHERE height <200;
SELECT name, height FROM SUBQUERY
WHERE height<(SELECT height
FROM SUBQUERY
WHERE name ='조성규');
ANY/ALL
ANY는 서브쿼리의 여러 개의 결과 중 한 가지만 만족.S다중
SELECT [칼럼명] , [칼럼명] FROM [테이블명]
WHERE [칼럼명] >=ANY(SELECT [칼럼명]
FROM [테이블명] WHERE NAME=‘조성규');
ALL은 서브 쿼리의 여러 개 의 결과를 모두 만족.
SELECT [칼럼명] , [칼럼명] FROM [테이블명]
WHERE [칼럼명] >= ALL (SELECT [칼럼명]
FROM [테이블명] WHERE NAME=‘조성규');
실습
table 이름 =subqury
이름(name)과 키가 출력되도록 서브쿼리문을
사용하여 작성하세요.
2. 주소(ADDR)가 부산인 사람들과 테이블의 키(height)를
비교하여 키가 200 초과된 사람이 출력 되도록 작성하세요.
3. 주소가 부산인 사람들 중 가장 작은 값(180) 보다 큰 키를 가진 사람의 이름과 키를 출력하고, 내림차순으로 정렬하라
(ANY,MIN)
'DATABASE' 카테고리의 다른 글
[DATABASE][SCHEMA] (0) | 2018.04.20 |
---|---|
[DATABASE][view] (0) | 2018.04.20 |
[DATABASE][JOIN] (0) | 2018.04.20 |
[DATBASE][스키마] (0) | 2018.04.20 |
[DATABASE][GROUP FUNCTION] (0) | 2018.04.20 |