SQL view, scalar, sub-query

강정우·2022년 7월 17일
0

DB

목록 보기
8/30
post-thumbnail

3. 서브쿼리 심화

1. 동작하는 방식에 따른 서브쿼리 분류

  • 서브쿼리에 메인 쿼리의 컬럼이 포함되는지에 따라 연관 서브쿼리(correlated subquery), 비연관 서브쿼리라고 불린다.

연관 서브쿼리

  • 메인쿼리의 컬럼이 서브쿼리에 포함되며, 메인쿼리의 컬럼은 서브쿼리에 특정 조건으로 사용된다.

비연관 서브쿼리

  • 메인쿼리의 컬럼이 서브쿼리에 포함되지 않으며, 주로 메인쿼리에 특정한 값을 제공할 때 사용된다.

2. 반환되는 데이터 형태에 따른 서브쿼리 분류

1)단일 행 서브쿼리(단일컬럼)

  • 서브쿼리 결과가 한개의 행을 반환하며, 단일 행 비교 연산자(=, <, >, <=, >=)와 같이 사용된다.
    2)당중 행 서브쿼리(단일컬럼)
  • 서브쿼리 결과가 두개 이상의 행을 반환하며, 다중 행 비교 연산자(IN, ALL, ANY, EXISTS)와 같이 사용된다.
  • in : 서브쿼리 결과에 존재하는 값들 중 하나와 일치해야한다. 무조건 일치 해야한다. where절 2개 column in (sub-query의 select절 2개 column)
  • exists : 서브쿼리 결과값이 존재하는지 여부를 확인한다. 일치하는지 안 하는지만 확인 하는 것.
  • all : 서브쿼리 결과에 존재하는 모든 값들에 대해 조건을 만족해야한다.
  • any : 서브쿼리 결과에 존재하는 값들 중 조건을 만족하는 것이 하나 이상 존재해야 한다.

3)다중 컬럼 서브쿼리(멀티컬럼)

  • 서브쿼리의 결과가 여러개의 컬럼을 반환하며, 메인쿼리의 조건과 동시에 비교된다.

3. 스칼라 서브쿼리

  • 하나의 속성을 가지면서, 하나의 행만을 반환하는 쿼리이다. 그리고 이는 select, where, having절 등에서 사용할 수 있다.
    즉, 단일 컬럼이면서 단일 행이면 스칼라 서브쿼리라고 한다.
  • 스칼라 서브쿼리 DUAL
    from을 사용한 특정 테이블 참조 없이 쿼리를 작성하는 경우도 있다.
    dual talbe을 이용하여 ratio등을 구할수도 있다.

4. 뷰

  • 뷰 : 다른 테이블에서 파생된 테이블이며 물리적으로 데이터가 저장되는 것이 아니라, 논리적으로만 존재하며 뷰를 사용한 질의 시에는 DBMS에서 뷰 정의에 따라
    질의를 재작성하여 수행한다.

  • 독립성 : 테이블 구조가 변경되어도 뷰를 사용하고 있는 응용 프로그램은 변경하지 않아도 된다.

  • 편리성 : 자주 사용되는 복잡한 쿼리를 미리 뷰로 정의해 놓으면, 추후 커리는 간단한 형태로 표현할 수 잇따.

  • 보안성 : 사용자의 권한에 따라 열람이 가능한 데이터를 다르게할 수 있다. 권한에 따라 확인 가능한 컬럼을 정의하여 뷰를 생성하면, 기본 테이블 노출 없이 점근 제어를 할 수 있다.

  • 특징
    1.생성된 뷰는 또 다른 뷰를 생성할 때 사용될 수 있다.
    2.뷰의 정의는 변경할 수 없으며, 삭제 후 재생성이 필요하다. 즉, update가 없고 대신 replace로 delete 후 다시 create하는 방법밖에 없다.
    3.뷰를 통한 갱신에는 제약이 따른다. 갱신을 위해서는 기본적으로 원천 테이블의 기본키가 포함되어야 한다.
    4.원천이 되는 테이블이나 뷰가 삭제되면 이를 기반으로 하는 뷰도 함께 삭제된다.

  • 문법

create [or replace] view view_name as{
select 컬럼 명1, 컬럼 명2,...
from 테이블 명
where 조건
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글