Introduction

다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾는 방법을 이번 장에서 알아 본다. 책에선 하위 쿼리라고 하는데, 한글로 번역하지 않고, 그냥 서브 쿼리라고 부르는게 더 좋다고 생각한다.(하위 쿼리라고 검색하면 정보가 서브 쿼리보다 적기 때문이다.)

Content

1. 무엇을 SQL 쿼리라고 하는가?

사전전 의미로 쿼리는 질의인데, DB에 "어떤 어떤 것 주세요~" 라고 요청하는 SQL 절을 쿼리라고 한다.

2. 무엇을 서브 쿼 라고 하는가?

쿼리 안에 있는 쿼리를 서브 쿼리 라고 한다. 내가 본 시야가 아닌 다른 사람이 본 시야도 같이 참조 하면 더욱 확실해 질 것이다.(이런 여러 시야로 대상을 바라보면, 3D 처럼 구조화 된다.

관련 링크

  1. http://kukuta.tistory.com/128
  2. http://sql.1keydata.com/kr/sql-subquery.php

3. 언제 서브 쿼리가 필요한가?

DB에 접근하는 속도를 높이기 위해서, 테이블을 다른 테이블과 관계를 맺어 만든다. 왜냐하면 한 테이블에 많은 정보가 들어 있으면, 속도가 느려지기 때문이다. 이 말은 중복 값을 다른 테이블에 빼고 테이블을 참조 한다는 뜻이다. 이렇게 만들어진 테이블들은 원하는 정보를 가져올 때, 원하는 정보를 찾을 수 있도록 해 주는 키워드가 다른 테이블에 저장되어 있다. 그러므로 다른 테이블에 있는 정보를 가져와 현재 테이블에서 찾고자 할 때, 서브 쿼리가 필요하다.

4. 어떻게 서브 쿼리를 사용 하는가?

서브쿼리는 SQL 절에서 계산필드, FROM, WHERE, HAVING에 들어갈 수 있으며, 대개 WHERE 절에서 많이 쓰인다. 사용 방법은 다음과 같다.

4-1 WHERE 절에서 사용 하기

여기서 보면, IN ( 이곳 ) 에 들어 간 것이 서브 쿼리이다. OrderItems 테이블 에서 prod_id = 'RGAN01' 인 것 중 order_num을 가져와 Orders 테이블에서 order_num 에 비교하여 참인것들만 보여라. 란 뜻이다.


4-2 계산 필드에서 사용 하기

보여줄 열이 SELECT의 결과로 쓰이는 형태로, 다음과 같이 사용 한다.

결과는 다음과 같다.


4-3 FROM 에서 사용 하기

FROM 에서 사용 할 경우(써본적은 없다.)는 대부분 VIEW 테이블이지 않을까 한다. FROM 절에 있는 서브 쿼리로 결과를 얻은 것이 "테이블" 이라고 생각하고 사용 하면 된다.

마땅히 예자가 떠오르지 않아, 사용하기 위한 코드로써 남겨 둔다.

5. 서브 쿼리 사용 규칙

  1. 서브쿼리를 WHERE 절에 사용 할 땐, 출력 결과가 한개 열만 된다. (SELECT * FROM .... 이 안된다는 뜻)
  2. 서브쿼리를 계산 필드에 사용 할 땐, (출력 레코드 갯수 * 서브쿼리) 만큼 쿼리 량이 증가 된다. 이는 성능 정하를 나타낸다.
  3. 서브쿼리 말고 JOIN 으로도 결과를 나타낼 수 있을 땐, 두개의 성능을 비교 해 보는 것이 좋다.

Digression

관련 링크를 찾는 습관을 길러야 겠다고 느낀 장이였다.

posted by 농사를 짓는 게임 프로그래머 최익필
TAG ,

댓글을 달아 주세요

  1. 한국인 2010.04.02 10:51  Addr  Edit/Del  Reply

    감사히 담아갑니다.

  2. sjhong 2013.05.23 16:57  Addr  Edit/Del  Reply

    감사히 읽었습니다