본문 바로가기

Programming/DB관련

서브쿼리

서브쿼리란?

하나의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 것이다. 예를 들어 A라는 테이블에서 검색해 나온 결과만을 대상으로 다시 한 번 더 쿼리를 날리는 것.

참고로 하나 이상의 테이블을 연결하여 검색하는 기능은 조인(Join) 쿼리이다.

 

서브쿼리의 규칙

서브쿼리는 언제나 SELECT문 하나이다.

서브쿼리는 항상 괄호 안에 있다.

서브쿼리에는 세미콜론이 없다. 세미쿼리는 항상 전체쿼리의 마지막에만 위치한다.

서브쿼리는 SELECT절, 열리스트를 선택하는 경우에는 FROM절, HAVING절

서브쿼리는 SELECT, INSERT, UPDATE, DELETE와 함께 사용할 수 있다.

 

서브쿼리가 사용되는 경우

DB에 접근하는 속도를 높이기 위하여, 테이블은 다른 테이블과 관계를 맺는다. 왜냐하면 한 테이블에 많은 정보가 들어가 있으면, 속도가 느려지기 때문이다. 이렇게 만들어진 테이터들은 원하는 정보를 가져올 때, 원하는 정보를 찾을 수 있도록 해주는 키워드가 다른 테이블에 저장되어 있다.

그러므로 다른 테이블에 있는 정보를 가져와 현재 테이블에서 찾고자 할 경우, 서브 쿼리가 사용된다.

 

기본문법

SELECT column_name FROM table_name WHERE column_name = (

SELECT column_name FROM table_name WHERE column_name = some_value

);

 

서브쿼리의 사용 예

1. WHERE절에서의 사용

SELECT * FROM 테이블2 WHERE 컬럼6 IN (

SELECT 컬럼1 FROM 테이블1 WHERE 컬럼1 = '1'

);

2. 계산 필드에서의 사용

SELECT 컬럼1, 컬럼2,(

SELECT COUNT(*) FROM 테이블2 WHERE 테이블2.컬럼6 = 테이블1.컬럼1

) AS 비교수치 FROM 테이블1;

 

3. FROM에서의 사용

FROM에서 사용되는 경우는 거의 없고, VIEW테이블에서 주로 사용된다.

FROM절에 있는 서브 쿼리로 결과를 얻어 그 결과 값을 대상으로 다시 쿼리문을 실행한다.

SELECT 컬럼5, 컬럼6 FROM ( SELECT 컬럼4, 컬럼5, 컬럼6 FROM 테이블2 ) AS 비교수치; 

 

'Programming > DB관련' 카테고리의 다른 글

Character Functions (문자형 함수)  (0) 2012.11.12
DECODE 함수 (ORACLE)  (0) 2012.11.12
INNER JOIN & OUTER JOIN  (0) 2012.04.05
서브쿼리  (0) 2012.03.30
조인(Join) 쿼리  (0) 2012.03.30
[DB] MySQL 명령어 정리  (0) 2010.06.10