개발 노트

서브쿼리(Subquery) 본문

데이타베이스/MySQL

서브쿼리(Subquery)

한츄 2023. 12. 26. 08:48

서브쿼리(Subquery)

서브쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말합니다.

서브쿼리는 보통 괄호로 감싸져서 표현됩니다.

실행 순서는 서브쿼리 실행 후 메인쿼리가 실행되며, 서브쿼리는 메인쿼리에 포함되는 종속적인 관계입니다.

 

서브쿼리는 메인쿼리의 컬럼을 사용가능하고 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없습니다.

 

서브쿼리의 장점

  1.  서브쿼리는 쿼리를 구조화 시키므로, 쿼리의 각 부분을 명확하게 구분할 수 있게 해줍니다.
  2.  서브쿼리는 복잡한 join이나 union과 같은 동작을 수행할 수 있는 또 다른 방법을 제공해줍니다.
  3.  서브쿼리는 join이나 union에 비해 가독성이 좋습니다.

 

서브쿼리를 사용할 때 주의할 점

 

  1. 서브쿼리는 SELECT문으로만 작성이 가능합니다.
  2. 서브쿼리를 괄호로 감싸서 사용합니다.
  3. 서브쿼리는 단일 행 또는 복수 행 비교연산자와 함께 사용가능합니다.
  4. 서브쿼리에서는 ORDER BY를 사용하지 못합니다.
  5. 괄호가 끝난뒤 끝에 세미콜론(;)을 사용하지 않습니다.

 

 

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

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • HAVING
  • INSERT 문의 VALUE
  • UPDATE 문의 SET

 

서브쿼리의 종류

  • 스칼라 서브쿼리 : 하나의 컬럼처럼 사용

- SELECT문에서 사용하는 서브쿼리입니다.

- 다른 테이블에서 어떠한 값을 가져올 때 사용합니다.

- 하나의 값만 리턴이 가능하며, 두 개이상일경우 리턴할 수 없습니다.

- 일치하는 데이터가 없더라도 NULL값을 리턴할 수 있습니다.

 

  • 인라인 뷰: 하나의 테이블 처럼 사용
  • 일반 서브쿼리: 하나의 변수(상수)처럼 사용
SELECT col1, (SELECT ...) -- 스칼라 서브쿼리
FROM (SELECT ...)         -- 인라인 뷰
WHERE col = (SELECT ...)  -- 일반 서브쿼리

 

'데이타베이스 > MySQL' 카테고리의 다른 글

트랜잭션(Transaction)의 개념과 사용법  (0) 2024.01.09
IN 과 EXIST  (0) 2023.12.26
조인(JOIN)  (0) 2023.12.26
특정 문자가 포함된 인스턴스 찾기  (0) 2023.06.14
패스워드 정책 확인 및 변경  (0) 2023.06.02