CS/database

Subquery

superbono 2021. 4. 7. 16:19

* Subquery?

 서브쿼리(Subquery)란 다른 쿼리 내부에 포함되어 있는 select문을 의미한다. 

서브 쿼리를 포함하고 있는 쿼리를 외부 쿼리 또는 메인 쿼리라고 부르며 서브쿼리는 내부 쿼리라고도 부른다. 

서브쿼리는 비교 연산자의 오른쪽에 기술해야 하며 반드시 괄호로 감싸져 있어야 한다. 

서브쿼리는 메인쿼리가 실행되기 전에 한번씩 실행된다. 서브쿼리에서 실행된 결과는 메인 쿼리에 전달되어 최종적인 결과를 출력한다. 

 

* 서브쿼리의 종류

중첩서브쿼리(nested subquery): where 문에 작성하는 서브 쿼리

 1. 단일 행

 2. 복수(다중) 행

 3. 다중 컬럼

인라인 뷰(inline view): from 문에 작성하는 서브 쿼리

스칼라 서브 쿼리(scalar subquery): select 문에 작성하는 서브 쿼리 

 

* 주의 사항

 - 서브쿼리는 반드시 ()로 감싸야 한다.

 - 서브 쿼리는 단일 행 또는 다중 행 비교 연산자(IN)와 함께 사용된다.

 - 서브 쿼리에는 ORDER BY를 사용하지 못한다. 

 

* 서브 쿼리가 사용이 가능한 곳

 - SELECT

 - FROM

 - WHERE

 - HAVING

 - ORDER BY

 - INSERT문의 VALUES

 - UPDATE문의 SET

 - CREATE 등...

 

* 데이터베이스에서 서브쿼리 사용시 주의 사항

1. 비교 연산자를 잘못 사용하는 경우

2. 칼럼 수가 일치하지 않는 경우

3. order by 절을 잘못 사용하는 경우 등이 있다 .

 

Subquery Ex)

SELECT column-names
  FROM table-name1
 WHERE value IN (SELECT column-name
                   FROM table-name2 
                  WHERE condition)
SELECT ProductName
  FROM Product 
 WHERE Id IN (SELECT ProductId 
                FROM OrderItem
               WHERE Quantity > 100)

출처: www.dofactory.com/sql/subquery

'CS > database' 카테고리의 다른 글

CHAR VS VARCHAR  (0) 2021.07.20
MySQL 이모지(Emoji) 문자열 입력  (0) 2021.05.18
Join  (0) 2021.04.06
JDBC Programming 개발 순서  (0) 2021.03.12
JDBC(Java DataBase Connectivity)  (0) 2021.03.12