61일차

박미지·2023년 1월 25일
0

Oracle DB

목록 보기
6/7
  1. SUB QUERY (서브쿼리)
  • SELECT문 안에 다시 SELECT문이 기술된 형태의 쿼리
  • 단일 SELECT문으로 조건식을 만들기에는 조건이 부족할 때 또는 완전히 다른 테이블에서 데이터 값을 조회하여 메인 쿼리의 조건으로 사용하려 할때 유용
  • 하나의 SQL문에 포함되어 있는 또다른 SQL문을 의미함
  • 사용방법
    -- 서브쿼리를 괄호로 감싸서 사용
    -- 서브쿼리는 단일 행 또는 복수 행 비교연산자와 함께 사용 가능
    -- 서브쿼리에서는 ORDER BY를 사용하지 못함
  • 사용가능한 위치
    SELECT, FROM, WHERE, HAVING ORDER BY, INSERT 문에 VALUES 절
  1. 서브쿼리 분류
  • 단일행 서브 쿼리
    서브쿼리가 단일 행 비교 연산자 (=>, <, <<, >, >>, <>> 와 함께 사용할 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야 함
    만약 결과가 2건 이상인 경우 오류가 발생

그룹함수 사용 경우 결과 값이 1건이므로 단일행 서브쿼리 사용 가능

  • 다중행 서브 쿼리
    서브쿼리의 결과가 2건 이상 반환될수 있는 경우 다중 행 비교 연산자 (IN, ALL, ANY, SOME) 와 함께 사용

    --서브쿼리에서 여러행 발생하는 경우 사용

  • FROM 절에 사용하는 서브 쿼리
    인라인 뷰 라고 함
    FROM 절에 테이블명만 오도록 되어 있으나 동적생성된 테이블형태로 사용 인라인뷰는 SQL문이 실행될때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않음
    인라인뷰는 동적으로 조인방식을 사용한것 같음

  1. 다중행 연산자 (ALL, ANY, EXISTS)
    서브쿼리 작성시 고려해야할 점, 서브쿼리의 결과 값이 단일 튜플이 나올수 있지만 다중 튜플일 경우도 있음
  • ALL (다중 튜플에서 and 결과로 연산이 되는데 사용)
  • ANY (다중 튜플에서 or 결과로 연산이 되는데 사용)

  • EXISTS / NOT EXISTS
    (데이터가 존재할 경우와 존재하지 않을 경우 특정 액션을 해야 할 경우)
    서브쿼리에 해당하는 튜플이 적어도 한건 이상 존재하면 'TRUE' 없으면 'FALSE' 를 리턴하며, 서브쿼리에 일치 하는 결과가 한건이라도 있으면 쿼리를 더 이상 수행 하지 않음 (SELECT, INSERT, UPDATE, DELETE 에서 사용 가능)

  1. 서브쿼리를 활용한 DDL
    테이블의 구조와 정보를 복사하는 벙법
  1. 서브쿼리를 활용한 DML
    테이블의 구조와 정보를 복사하는 벙법
profile
공부하는 백엔드 개발자

0개의 댓글