데이타베이스/MySQL
서브쿼리(Subquery)
한츄
2023. 12. 26. 08:48
서브쿼리(Subquery)
서브쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말합니다.
서브쿼리는 보통 괄호로 감싸져서 표현됩니다.
실행 순서는 서브쿼리 실행 후 메인쿼리가 실행되며, 서브쿼리는 메인쿼리에 포함되는 종속적인 관계입니다.
서브쿼리는 메인쿼리의 컬럼을 사용가능하고 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없습니다.
서브쿼리의 장점
- 서브쿼리는 쿼리를 구조화 시키므로, 쿼리의 각 부분을 명확하게 구분할 수 있게 해줍니다.
- 서브쿼리는 복잡한 join이나 union과 같은 동작을 수행할 수 있는 또 다른 방법을 제공해줍니다.
- 서브쿼리는 join이나 union에 비해 가독성이 좋습니다.
서브쿼리를 사용할 때 주의할 점
- 서브쿼리는 SELECT문으로만 작성이 가능합니다.
- 서브쿼리를 괄호로 감싸서 사용합니다.
- 서브쿼리는 단일 행 또는 복수 행 비교연산자와 함께 사용가능합니다.
- 서브쿼리에서는 ORDER BY를 사용하지 못합니다.
- 괄호가 끝난뒤 끝에 세미콜론(;)을 사용하지 않습니다.
서브쿼리가 사용이 가능한 곳
- SELECT
- FROM
- WHERE
- ORDER BY
- HAVING
- INSERT 문의 VALUE
- UPDATE 문의 SET
서브쿼리의 종류
- 스칼라 서브쿼리 : 하나의 컬럼처럼 사용
- SELECT문에서 사용하는 서브쿼리입니다.
- 다른 테이블에서 어떠한 값을 가져올 때 사용합니다.
- 하나의 값만 리턴이 가능하며, 두 개이상일경우 리턴할 수 없습니다.
- 일치하는 데이터가 없더라도 NULL값을 리턴할 수 있습니다.
- 인라인 뷰: 하나의 테이블 처럼 사용
- 일반 서브쿼리: 하나의 변수(상수)처럼 사용
SELECT col1, (SELECT ...) -- 스칼라 서브쿼리
FROM (SELECT ...) -- 인라인 뷰
WHERE col = (SELECT ...) -- 일반 서브쿼리