서브쿼리

2023. 10. 7. 16:59BOOKS/SQL 전문가 가이드

 
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
저자
한국데이터산업진흥원
출판
한국데이터산업진흥원
출판일
2021.03.15

서브쿼리

  • 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
  • 서브쿼리는 메인 쿼리의 칼럼을 모두 사용할 수 있지만 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다.
  • 서브 쿼리 레벨과 상관없이 항상 메인 쿼리 레벨로 결과 집합이 생성됨
  • 주의 사항
    • 서브쿼리는 괄호로 감싸서 기술
    • 서브 쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능 → 단일행 비교 연산자의 서브 쿼리 결과는 반드시 1건 이하여야함
    • 중첩 서브 쿼리 및 스칼라 서브 쿼리에서는 ORDER BY 사용 불가능

동작 방식에 따른 서브 쿼리 분류

서브쿼리 종류 설명
비연관 서브 쿼리 서브 쿼리가 메인 쿼리 칼럼을 갖지 않는 형태
주로 메인쿼리 값을 제공하기 위해 사용
연관 서브 쿼 서브 쿼리가 메인 쿼리 칼럼을 갖는 형태
메인 쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인할 때 주로 사용

1. 단일 행 서브 쿼리

실행 결과가 항상 1건 이하인 서브 쿼리

단일 행 비교 연산자(=,<,≤,>,≥,<>,...)와 함께 사용


2. 다중 행 서브 쿼리

  • 실행 결과가 여러 건인 서브 쿼리

다중행 비교 연산자

다중 행 연산자 설명
IN(서브쿼리) 서브 쿼리 결과에 존재하는 임의의 값과 동일한 값이 있는지
비교연산자 ALL(서브쿼리) 서브 쿼리 결과에 존재하는 모든 값을 만족하는지
비교연산자 ANY(서브쿼리) 서브 쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는지
EXISTS(서브쿼리) 서브 쿼리의 결과를 만족하는 값이 존재하는지 여부 확인
조건 만족하는 1건만 찾으면 더이상 검색 X

3. 다중 칼럼 서브 쿼리

  • 실행 결과로 여러 개의 칼럼 반환
  • 메인 쿼리 조건과 동시에 비교되는 것
  • SQL Server에서는 지원 X

4. 연관 서브 쿼리

  • 서브 쿼리 내에 메인 쿼리 칼럼이 사용된 서브 쿼리

5. 그 밖의 위치에서 사용하는 서브 쿼리

스칼라 서브 쿼리

  • SELECT절에서 사용
  • 한 행, 한 칼럼만을 반환하는 서브 쿼리 → 결과가 2건 이상 반환되면 오류 반환

인라인 뷰

  • FROM절에서 사용
  • 서브 쿼리 결과를 테이블처럼 사용가능

Having절에서의 서브 쿼리

  • 집계함수와 함께 사용될 때 그룹핑 된 결과에 대해 부가적인 조건을 주기 위해 사용

6. 뷰

  • 실제 데이터를 갖지 않음. 단지 뷰 정의만을 가짐

뷰 사용의 장점

뷰의 장점 설명
독립성 테이블 구조가 변경되도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
보안 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.
  • CREATE VIEW문으로 생성
CREATE VIEW 뷰명 
AS
SELECT ...;
  • DROP VIEW문으로 제거
DROP VIEW 뷰명;

 

'BOOKS > SQL 전문가 가이드' 카테고리의 다른 글

그룹 함수  (0) 2023.10.07
집합 연산자  (0) 2023.10.07
표준 조인  (0) 2023.10.07
조인  (0) 2023.10.07
ORDER BY절  (0) 2023.10.07