안녕하세요. 데이터베이스의 쿼리문에 적용 가능한 쿼리에서 서브 역할을 하는 서브쿼리에 대해 알아보자합니다.


# 서브쿼리란 무엇인가?


서브쿼리라서 덜 중요할까요? 이런 글이 있더군요... 서브쿼리가 없어도 동일한 기능을 구현할 수 있지만 밤새는 개발자들이 더 많았을 거라고요... 재미있는 말입니다 :) 사실 서브쿼리는 조금만 복잡한 쿼리문이라면 대부분 사용하고 있는 굉장히 자주 쓰이는 쿼리문이라 서브라고 하기에는 조금 미안한 부분이 있네요; 어쨌든 너무 중요한 부분을 차지 하는 것은 사실입니다.

서브쿼리는 쿼리 안에 또 다른 쿼리가 들어있는 경우를 말합니다. 예를 들어 아래의 예제를 봐주세요.


SELECT columnA, columnB FROM tableA columnB < 150;


만약 위와 같이 150보다 작은 컬럼B의 모든 레코드를 불러오려는 쿼리가 있다고 합시다. 그런데 이 쿼리를 조금 변형해서 columnA의 평균보다 작은 columnB의 모든 레코드를 불러오려면 어떻게 수정해야할까요?

이런 경우 서브쿼리를 사용하여 해결할 수 있습니다.
SELECT columnA, columnB FROM tableA columnB < (SELECT AVG(columnA) FROM tableA);

이렇게 되겠네요...  아래는 추가적으로, 서브쿼리의 특징입니다.
  • 반드시 괄호안에 사용된다.
  • 서브쿼리의 개수는 한개이므로 LIMIT를 써야할 이유가 없다.
  • 서브쿼리의 괄호안에는 세미콜론(;)을 넣지 않는다.

서브쿼리를 잘 활요하는 것이 중요하겠습니다.