제 4절 서브쿼리(Sub-Query)

SQL 문 안에 포함된 또 다른 SQL 문이다.

  • 주의사항
    • 서브쿼리를 괄호로 감싸서 사용한다.
    • 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.
    • 서브쿼리에서는 ORDER BY 절을 사용하지 못한다. ORDER BY 절은 SELECT 절에서 오직 한 개만 올 수 있기 때문에 ORDER BY 절은 메인 쿼리의 마지막 문장에 위치해야 한다.
  • 서브쿼리가 SQL 문에서 사용 가능한 곳
    • SELECT 절
      스칼라 서브쿼리는 한 행, 한 컬럼만을 반환하는 서브쿼리이다.

      결과가 2건 이상 반환되면 SQL 문은 오류를 반환한다.
    • FROM 절
      FROM 절에서 사용되는 서브쿼리를 인라인 뷰라고 한다.
      인라인 뷰는 SQL문이 실행될 때 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않는다. 그래서 일반적인 뷰를 정적뷰라고 하고 인라인 뷰를 동적뷰라고 한다.
    • WHERE 절
    • HAVING 절
      그룹함수와 함께 사용될때 그룹핑된 결과에 대해 부가적인 조건을 주기 위해 사용한다.
    • ORDER BY 절
    • INSERT 문의 VALUES 절
    • UPDATE 문의 SET 절
  • 서브쿼리의 유형
    • 동작 방식에 따른 서브쿼리의 종류
    • 반환되는 데이터의 형태에 따른 서브쿼리의 종류
    • 위치 기준

1. 단일행 서브쿼리

서브쿼리가 단일 행 비교 연산자(=, <, <=, >, >=, <>)와 함께 사용할 때 서브쿼리의 결과 건수가 반드시 1건 이하여야 한다.

2. 다중행 서브쿼리

3. 다중 컬럼 서브쿼리

서브쿼리의 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미한다.

4. 연관 서브쿼리

연관 서브쿼리는 서브쿼리 내에 메인쿼리 컬럼이 사용된 서브쿼리이다.

테이블은 실제로 데이터를 가지고 있는 반면 뷰는 실제 데이터를 가지고 있지 않다.
뷰는 단지 뷰 정의만을 가지고 있다. 질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성하여 질의를 수행한다. 뷰는 실제 데이터를 가지고 있지 않지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 한다.

  • 뷰 생성
CREATE VIEW [뷰 이름] AS
[SELECT];
  • 뷰 삭제
DROP VIEW [뷰 이름];

좋은 웹페이지 즐겨찾기