분류 전체보기 74

그룹 내 순위 함수(RANK, DENSE_RANK, ROW_NUMBER)

1) RANK ORDER BY를 포함한 QUERY 문에서 특정 칼럼에 대한 순위를 구함. - 특정 범위(PARTITION)와 전체 데이터에 대한 순위를 구할 수 있다. - 동일한 값에 대해서는 동일한 순위를 부여한다. [예제] JOB 별 SALARY 순서 구하기. SELECT JOB, ENAME, SAL, RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) JOB_RANK FROM EMP; [실행 결과] 2) DENSE_RANK RANK 함수와 유사. - 동일한 순위를 하나의 건수로 취급한다. [예제] SELECT JOB, ENAME, SAL, RANK() OVER (ORDER BY SAL DESC) RANK, DENSE_RANK() OVER (PARTITION BY ..

그룹 함수(ROLLUP, CUBE, GROUPING SETS)

그룹 함수(GROUP FUNCTION) 하나의 테이블을 여러 번 읽어 재정렬하지 않고, 하나의 SQL로 테이블을 한 번만 읽어서 빠르게 원하는 리포트를 작성. → 집계 함수(COUNT, SUM, AVG, MAX, MIN)를 제외한 ROLLUP, CUBE, GROUPING SETS - ROLLUP 함수 소그룹 간의 소계 계산. Subtotal Level: N + 1 ex) GROUP BY ROLLUP (A, B); → Grouping Columns의 수: 2개 (A와 B) → Subtotal Level : 3 (2 + 1) - CUBE 함수 GROUP BY 항목들 간 다차원적인 소계 계산. Subtotal Level: 2의 N승 ex) GROUP BY CUBE (A, B); → Subtotal Level ..

뷰(VIEW, VIEW 장점, VIEW 생성, VIEW 사용, VIEW 제거)

뷰(VIEW) 테이블과 달리 실제 데이터를 가지고 있지 않고, 뷰 정의(View Definition)만을 가지고 있다. → 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성(Rewrite)하여 질의를 수행. - 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블(Virtual Table)이라고도 함. 뷰 장점 - 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경할 필요 없음. - 편리성 : 복잡한 질의를 뷰로 생성하여 질의를 단순하게 작성할 수 있음. - 보안성 : 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 칼럼을 빼고 생성하여 사용자에게 정보를 감춤. 뷰 생성 CREATE VIEW V AS SELECT T1.칼럼명1, T2.칼럼명2, ... FROM ..

FROM절 JOIN(INNER JOIN, NATURAL JOIN, USING 조건절, ON 조건절, CROSS JOIN, OUTER JOIN)

FROM절 JOIN 형태 - INNER JOIN - NATURAL JOIN - USING 조건절 - ON 조건절 - CROSS JOIN - OUTER JOIN ANSI/ISO SQL에서 규정한 JOIN 문법은 WHERE 절을 사용하던 기존 JOIN 방식과 차이가 있다. INNER JOIN → WHERE 절에서부터 사용하던 JOIN의 DEFAULT 옵션으로, JOIN 조건에서 동일한 값이 있는 행만 반환. → CROSS JOIN, OUTER JOIN과는 같이 사용할 수 없다. NATURAL JOIN → INNER JOIN의 하위 개념. 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN 수행 WHERE 절에서 JOIN 조건과 데이터 검증 조건이 같이 사용되었을 때 용도가 불분명한 경우..

일반 집합 연산자, 순수 관계 연산자

관계형 데이터베이스의 이론을 수립한 E.F.Codd 박사의 논문에 언급된 8가지 관계형 대수는 각각 4개의 일반 집합 연산자와 순수 관계 연산자로 나눌 수 있다. 이는 관계형 데이터베이스 엔진 및 SQL의 기반 이론이 되었다. 일반 집합 연산자 일반 집합 연산자 현재 SQL UNION 연산 UNION 기능 INTERSECTION 연산 INTERSECT 기능 DIFFERENCE 연산 EXCEPT(Oracle은 MINUS) 기능 PRODUCT 연산 CROSS JOIN 기능 - UNION 연산 수학적 합집합. 공통 교집합의 중복을 없애기 위한 사전 작업. 정렬 작업 발생 +) UNION ALL은 공통 집합을 중복해서 그대로 보여주기 때문에 정렬 작업이 일어나지 않음. → UNION과 UNION ALL의 출력 ..

EQUI JOIN(등가 조인)과 Non EQUI JOIN(비등가 조인)

등가 조인(EQUI JOIN) 두 개의 테이블 간 칼럼 값들이 서로 정확하게 일치하는 경우 대부분 PK ↔ FK 관계를 기반으로 한다. → 반드시 PK ↔ FK 관계로만 성립하는 것은 아님. - JOIN의 조건은 WHERE 절에 기술하게 되는데 '=' 연산자를 사용해서 표현한다. SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... FROM 테이블1, 테이블2 WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2; - INNER JOIN으로도 표현할 수 있다. ON절에 JOIN 조건을 넣는다. SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.칼럼명1 = 테이블2.칼럼명2; 참고) INNER JOIN https://it-amin.tistor..

조인수행원리(NL Join, Sort Merge Join, Hash Join)

조인(Join) 두 개 이상의 테이블을 하나의 집합으로 만드는 연산 → SQL문에서 FROM 절에 두 개 이상의 테이블이 나열될 경우 조인이 수행됨. FROM 절에 세 개의 테이블이 존재하더라도 세 개의 테이블이 동시에 조인이 수행되는 것이 아니라, 먼저 두 개의 테이블에 대해 조인이 수행된 후 먼저 수행된 조인 결과와 나머지 테이블 사이에서 조인이 수행된다. 테이블 또는 조인 결과를 이용하여 조인을 수행할 때 조인 단계별로 다른 조인 기법을 사용할 수 있다. [조인 기법] : NL Join, Hash Join, Sort Merge Join 1) NL Join 중첩된 반복문과 유사한 방식으로 조인 수행 더보기 Nested Loop : 루프 구조 내부에 하나 이상의 또 다른 내부 루프 구조를 갖는 형태로 ..

[데이터베이스] 전체 테이블 스캔과 인덱스 스캔

1) 전체 테이블 스캔 테이블의 모든 데이터를 읽어가면서 조건에 맞으면 결과로 추출하고 조건에 맞지 않으면 버리는 방식으로 검색 Oracle의 경우 검색 조건에 맞는 데이터를 찾기 위해 테이블의 고수위 마크(HWM) 아래의 모든 블록을 읽는다. 더보기 고수위 마크(HWM, High Water Mark) : 테이블에 데이터가 쓰여졌던 블록 상의 최상위 위치 고수위 마크까지의 블록 내 모든 데이터를 읽어야 하기 때문에 시간이 결과를 찾을 때까지 오래 걸릴 수 있다. - 전체 테이블 스캔 방식 선택하는 경우 1. SQL문에 조건이 존재하지 않는 경우 조건이 존재하지 않는다. = 모든 데이터가 답이 된다. 따라서 테이블의 모든 블록을 읽으면서 무조건 결과로서 반환하면 된다. 2. SQL문의 주어진 조건에 사용가..

인덱스(인덱스 특징, 인덱스 종류, B-트리 인덱스, 클러스터형 인덱스)

인덱스 원하는 데이터를 쉽게 찾을 수 있게 돕는 책의 찾아보기와 유사한 개념으로, 테이블을 기반으로 선택적으로 생성할 수 있는 구조임. → 인덱스를 생성하지 않아도 되고 여러 개를 생성해도 된다. 목적: 검색 성능의 최적화 DML(INSERT, UPDATE, DELETE 등) 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점이 존재. 인덱스 종류 ORACLE의 트리기반 인덱스: B-트리 인덱스, 비트맵 인덱스(Bitmap Index), 리버스 키 인덱스(Reverse Key Index), 함수 기반 인덱스(FBI, Function-Based Index) 등 SQL Server의 인덱스: 저장 구조에 따라 클러스터형(clustered) 인덱스, 비클러스터형(noncluste..

SQL 처리 흐름도(SQL 처리 흐름도 구성, 조인 순서, 조인 기법, 액세스 기법, 일량)

SQL 처리 흐름도(Access Flow Diagram) 내부적인 처리 절차를 시각적으로 표현한 도표 → 실행계획을 시각화 함. SQL 처리 흐름도 구성 조인 순서, 조인 기법, 액세스 기법, 일량 등 액세스 처리 흐름도에는 SQL문의 처리를 위해 어떤 테이블을 먼저 읽었는지(조인 순서), 테이블을 읽기 위해서 인덱스 스캔을 수행했는지 또는 테이블 전체 스캔을 수행했는지(액세스 기법)과 조인 기법 등을 표현할 수 있다. - 조인 순서 : TAB1 → TAB2 - 액세스 기법 : TAB1 = 테이블 전체 스캔 TAB2 = 인덱스 스캔(I01_TAB2라는 인덱스) - 조인 기법 : NL Join → TAB1에 대한 액세스는 스캔(Scan) 방식이고 조인 시도 및 I01_TAB2 인덱스를 통한 TAB2 액세스..

728x90
반응형