Database 28

Oracle 윈도우 함수(WINDOW FUNCTION)/집계함수(AGGREGATE FUNCTION)

윈도우 함수(Window Function) 기본 문법① Oracle에서의 분석 & 순위 함수인 윈도우 함수는 크게 5가지 그룹으로 분류된다.② 윈도우 함수 사용 시 OVER문구가 키워드로 필수 포함된다.③ WINDOW 함수는 다른 함수와는 달리 중첩(NEST)해서 사용하지는 못하지만, 서브쿼리(Sub Query)에서는 사용할 수 있다.  1) Window Function SyntaxSELECT WINDOW_FUNCTION(argument) OVER( [partition by 칼럼] [order by 절] [window 절] )FROM 테이블명;  윈도우 함수(Window Function) 종류1) 그룹 내 순위 관련 함수① RANK : 동일한 값에 대해서는 동일한 순위를 부여 예) 1 → 2 → 2 → ..

Database 2020.09.23

Oracle 그룹 함수(ROLLUP, CUBE, GROUPING SETS, GROUPING) 개념 정리

데이터 분석을 위한 3가지 함수 종류 요약1) Group Function : ① 집계 함수를 제외한 함수를 포함(그룹 간의 소계를 계산하는 ROLLUP 함수, GROUP BY 항목들을 다차원적 소계로 계산하는 CUBE 함수, 특정 항목에 대한 소계를 계산하는 GROUPING SETS 함수)② ROLLUP, CUBE, GROUPING SETS 결과에 대한 정렬이 필요한 경우 ORDER BY절에 정렬 칼럼을 명시. 2) Window Function : ① 데이터 웨어하우스에서 발전한 기능으로, 분석 함수(Analytic Function)나 순위 함수(Rank Runction)라고 불림.  → 중요 포인트는 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수라는 것.② group by구문과 병행하여 사용할 수는..

Database 2020.09.22

[Oracle] 오라클 뷰(View) 특징 총정리

뷰(View)의 중요 포인트 10가지사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블(Virtual Table)이다. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 1) Table은 실제 데이터를 가지고 있지만, View는 단지 ‘뷰 정의’만을 가지고 있다.2) 질의문에서 뷰를 사용하면 이 ‘뷰 정의’를 참조해서 DBMS내부적으로 질의를 재구성하여 질의를 수행한다. 따라서, View는 실제 데이터를 가지고 있지는 않지만 테이블이 수행하는 역할을 하기 때문에, 가상 테이블(Virtual Table) 이라고도 불리는 것.3) 뷰의 정의는 변경할 수 없다. (ALTER VIEW문을 사용할 수 없음, 필..

Database 2020.09.21

[Oracle] IN, EXISTS, NOT IN, NOT EXISTS 특징 및 비교

다중 행(Multi Row) 서브쿼리 IN과 EXISTS 실행 순서 및 특징1) IN : 실제 존재(일치)하는 데이터들의 모든 값까지 확인.① SubQuery를 먼저 실행하여 출력되는 그에 대한 모든 row가져옴(따라서 사실 IN뒤의 괄호안에는 서브쿼리 이외에도 직접 요소 값을 적어줄 수 있음)② 이후에는 MainQuery에서 하나의 row를 가져옴.③ 그 row의 값이 ①에서 가져온 IN 이하의 요소들에 포함(일치)되어 있는지를 체크하고, SubQuery의 요소들 중 하나라도 일치한다면 그 row를 출력④ ②번~③번 과정 반복하면서 결과 출력.  2) EXISTS : 단지 해당 row가 존재하는지만 확인하고, 더 이상 수행되지 않음.① MainQuery를 먼저 실행하여 출력되는 상위 row가져옴.② 해..

Database 2020.09.18

Oracle 서브쿼리(Sub Query) 사용법 & 예제

서브쿼리(Sub Query) 개념1) SQL문 내에 쓰인 SELECT 문을 의미하며, 이때 바깥에 있는 SQL문을 메인 쿼리(Main Query)라 부른다.2) MainQuery 안에 포함된 종속적인 관계이기 때문에 논리적인 실행순서는 항상 MainQuery에서 읽혀진 데이터에 대해 SubQuery에서 해당 조건이 만족하지를 확인하는 방식으로 수행되어야 한다. 그러나 실제 SubQuery의 실행순서는 상황에 따라 달라질 수 있음. → SubQuery의 검색된 결과 값이 MainQuery에 사용될 때의 SubQuery는 MainQuery 실행 전에 실행됨.서브쿼리 종류설명비연관(Un-Correlated) 서브쿼리서브쿼리가 메인쿼리 칼럼을 가지고 있지 않는 형태의 서브쿼리를 의미한다. 메인쿼리에 값(서브쿼리..

Database 2020.09.17

계층형 쿼리(Hierarchical Query) 개념 및 실행 순서 상세 정리

Oracle 계층형 쿼리(Hierarchical Query)란?테이블에 계층적인 순서로 표현해야 하는 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의(Hierarchical Query)를 사용한다. 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다. 예를 들어, 사원 테이블에서는 사원들 사이에 상위 사원(관리자 or 직속상사)과 하위 사원 관계가 존재하고 조직 테이블에서는 조직들 사이에 상위 조직과 하위 조직 관계가 존재한다. 엔티티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터가 발생한다. 순환관계 데이터 모델의 예로는 조직, 사원, 메뉴 등이 있다.그리고 이러한 계층형 데이터를 기본적인 SQL문을 사용하여 계층 관계를 표현하는것은 불가능하며, 재귀..

Database 2020.09.16

집합 연산자(union, union all, intersect, except)

집합 연산자(Set Operator)여러 개의 질의의 결과를 연결(결합)하여 하나로 결과로 만드는 방식을 의미한다. (즉, 여러 개의 SELECT문을 연결하는 것)  1) 일반 집합 연산자① union : 여러 SQL문의 결과에 대한 합집합, union키워드로 구현.결과에서 중복된 행은 하나의 행으로 만듬. → 중복을 없애기 위한 정렬 작업으로 시스템 부하↑ ↔ union all키워드는 중복을 제외하지 않고 그대로 결합. 즉, 단순히 쿼리결과를 합침.② intersection : 여러 SQL문의 결과에 대한 교집합, intersect키워드로 구현.③ difference : 여러 SQL문의 결과에 대한 차집합. 대다수의 벤더는 EXCEPT를, Oracle은 MINUS키워드를 사용. (SQL표준은 EXCEP..

Database 2020.09.15

(Non)Equi join 및 표준 조인(inner, outer, natural, self, cross join, using, on조건절)

JOIN 개요(각종 DB서적에서는 join을 종종 '결합연산이라고 표현한다.)- 두 개 이상의 테이블들을 연결 or 결합하여 데이터를 출력하는 것을 의미.- from절에 여러 테이블을 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다.예) from절에 A, B, C라는 세 개의 테이블이 존재하더라도 세 개의 테이블이 동시에 조인 수행되는 것이 아님.↳ ( ( A join B ) join C ) join D 형식으로 순차적으로 조인처리됨. 이때 테이블의 조인 순서는 Optimizer에 의해 결정되고 이 부분은 추후에 DB튜닝의 주요 포인트. 해당 내용은 나중에 '조인 수행 원리' 파트로 자세히 포스팅하도록 하겠습니다. 1) Equi(동등, 등가) JOIN = inner ..

Database 2020.09.14

SELECT 문장 실행 순서와 Order by, ROWNUM조건

SELECT 문장 실행 순서GROUP BY절과 ORDER BY가 같이 사용될 때, SELECT문은 6개의 절로 구성이 되고, 수행 단계는 아래와 같다.(추가적으로 "계층형 질의문 실행 순서"는 여기를 클릭하여 확인하시면 됩니다.)실행 순서Query 문장상세 내용5select [Alias명]①데이터 값을 출력/계산함.(select)②from절에 테이블에 대한 Alias를 정의했다면, select절이나 where절에 일반 테이블명을 사용하면 파싱에러 발생. 정의한 Alias를 사용해야 한다.1from 테이블명발췌 대상 테이블을 참조 (from)2where 조건식발췌 대상이 아닌 것들 제거(필터링) (where)3group by 칼럼이나 표현식행들을 소그룹화 함. (group by)4having 그룹조건식그룹..

Database 2020.09.12

식별자(Identifiers) 분류 및 비식별자와의 관계

식별자(Identifiers)란??  엔티티(Entity)는 인스턴스들의 집합이라는 개념으로, 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다. 이 구분자를 식별자(Identifiers)라고 한다. 식별자란 하나의 엔티티에 구성되어 있는 여러 개의 속성 중에 엔티티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다. 보통 식별자와 키(Key)를 동일하게 생각하는 경우가 있는데 식별자라는 용어는 업무적으로 구분이 되는 정보로 생각할 수 있으므로 논리 데이터 모델링 단계에서 사용하고 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 데이터 모델링 단계에서 사용한다. 식별자의 분류체계분류식별자설명대표성 여부주 식..

Database 2020.09.11