본문으로 바로가기

[DATABASE][SUBQUERY]

category DATABASE 2018. 4. 20. 12:06

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





1.'방명광' 보다 키(height) 큰 사람들의

이름(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