레이블이 #오라클 #서브쿼리 #SQL #subquery인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #오라클 #서브쿼리 #SQL #subquery인 게시물을 표시합니다. 모든 게시물 표시

2021년 10월 24일 일요일

오라클 SQL(Oracle SQL) 서브쿼리(SubQuery) 개요 및 종류, 서브쿼리란?

 오라클 SQL(Oracle SQL) 서브쿼리(SubQuery) 개요 및 종류, 서브쿼리란? 

 

5. 서브쿼리

학습 목표

서브쿼리(subquery) 개념, 종류, 사용 방법을 알아봅니다.

학습 순서

  • 단일행 서브쿼리

  • 복수행 서브쿼리

  • 상관관계 서브쿼리

  • 스칼라 서브쿼리

  • 인라인뷰 서브쿼리

  • WITH 절(서브쿼리 팩토링)

  • 행 제한 구문을 활용한 Top-N 쿼리



핵심 요약

  1. 서브쿼리는 SELECT, INSERT, UPDATE, DELETE등 모든 SQL문에서 사용가능한 부속 쿼리 문 입니다.

  2. 단일행/복수행/상관관계/스칼라/인라인부/WITH 등에서 사용되는 SQL문 작성을 위한 필수품 입니다.

  3. 서브쿼리, 조인만 잘 이해하시면 쿼리 작성에 눈을 뜨게 됩니다.

서브쿼리 소개

서브쿼리subquery는 SELECT절, FROM절, WHERE절 또는 INSERT, UPDATE, DELETE 내부 또는 다른 서브 쿼리 내부에 중첩 사용될 수 있는내장된 SELECT 문장입니다. 내부쿼리(inner query)라고도 하며 메인쿼리 이전에 한 번만 실행되고 결과를 메인쿼리에서 전달합니다.

대체로 서브 쿼리는 메인 쿼리보다 먼저 실행되므로 서브 쿼리의 결과가 외부 쿼리에 전달 될 수 있습니다. 어떠한 경우에는 메인 쿼리의 값을 받아서 서브 쿼리가 실행 되기도 합니다.


다음은 EMP 테이블에서 이름이 ‘SMITH’인 직원의 급여보다 급여가 많은 사람을 추출하는 쿼리문입니다.



괄호로 싸인 부분이 서브쿼리입니다. 서브쿼리의 결과를 비교 조건으로 사용하는 외부에 있는 구문을 메인쿼리(main query)라고 합니다. 메인쿼리를 외부쿼리(outer query)라고도 합니다.  

서브쿼리 사용 지침

  • 서브쿼리는 괄호로 쌉니다.

  • 단일행 및 복수행 서브쿼리는 연산자 우측에 나타나야 합니다.

유용한 경우

서브쿼리는 테이블 자체의 데이터에 의존하는 조건으로 테이블의 행을 검색할 필요가 있을 때 유용합니다. 예를 들어 직원 테이블에서 SMITH 직원과 같은 부서에 있는 직원들을 추출하는 경우 먼저 SMITH의 부서를 먼저 추출하고, 추출한 부서코드를 가지는 직원들을 다시 추출하면 됩니다.


5.1 서브쿼리 종류

서브쿼리는 반환하는 값 개수에 따른 분류, 실행 방식 등에 따라 다양한 종류가 있습니다.


  • 반환하는 값 개수에 따른 분류. 서브쿼리가 행을 하나만 반환하면 단일행 서브쿼리, 행을 둘 이상 반환하면 복수행 서브쿼리라고 합니다. 단일행 서브쿼리는  =, <, <=, > , >=, <> 연산자를 사용하고 복수행 서브쿼리는 IN, ALL, ANY, SOME, EXISTS 연산자를 주로 사용합니다.

  • 실행 방식에 따른 구분. 메인쿼리의 컬럼을 서브쿼리에서 사용하는 경우 상관관계 서브쿼리라고 부릅니다.

  • 스칼라 서브쿼리. GROUP BY 절을 제외한 곳에서 행 하나, 컬럼 값 하나에 대체하여 SELECT 절을 기술할 수 있는데 이를 스칼라 서브쿼리라고 하며 반드시 결과 값을 하나만 반환해야 합니다. SELECT LIST, 

  • 인라인 뷰 서브쿼리. FROM 절 다음에 기본적으로 테이블명이 오지만 이를 대신하여 SELECT 절이 올 수 있는데 이를 인라인 뷰라고 합니다, 이 역시 서브쿼리의 일종입니다.

  • 서브쿼리 팩토링. UNION 등을 사용하여 SQL 문을 작성하는 경우 공통적인 SELECT 문이 자주 출현하는데 이를 WITH 절에서 이름을 부여해 정의하고 UNION을 사용하는 쿼리문에서는 이름만 가져다 쓰면 쿼리문의 반복을 줄이고, 가독성이 좋아지고 복잡한 구문이 간결해집니다. 이 WITH 구문을 서브쿼리 팩토링이라고 하며 SQL-99 표준의 일부로서 오라클 9.2 버전에서 추가됐습니다. 인라인뷰로 처리되거나 임시 테이블로 해석됩니다.

 

이름이 너무 많아서 다 외우기 힘들죠? 이제부터 하나하나 상세히 알아봅시다. 그 과정에서 개념과 사용법을 익히면 자연스럽게 알게 되니까, 지금 당장 외우려 하지 않아도 됩니다.

 

 

#오라클 #서브쿼리 #SQL #subquery

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...