본문 바로가기

DB/SQLD

(6)
[SQLD] SQL 활용 - Table Partition 1️⃣ Partition 기능 ∙ 파티션은 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장한다. ∙ 테이블의 데이터가 물리적으로 분리된 데이터 파일에 저장되면 입력, 수정, 삭제, 조회 성능이 향상된다. ∙ 파티션은 각각의 파티션 별로 독립적으로 관리할 수 있다. 즉, 파티션 별로 백업하고 복구가 가능하며 파티션 전용 인덱스 생성도 가능하다. ∙ 파티션은 Oracle DB의 논리적 관리 단위인 테이블 스페이스 간에 이동이 가능하다. ∙ 데이터를 조회할 때 데이터의 범위를 줄여서 성능을 향상시킨다. 2️⃣ Range Partition ∙ Range Partition은 테이블의 칼럼 중에서 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는 것이다. 3️⃣ List Partition..
[SQLD] SQL 활용 - Window Function 1️⃣ 윈도우 함수 ∙ 윈도우 함수는 행과 행 간의 관계를 정의하기 위해서 제공되는 함수이다. ∙ 윈도우 함수를 사용해서 순위, 합계, 평균, 행 위치 등을 조작할 수 있다. 구조 설명 ARGUMENT(인수) 윈도우 함수에 따라서 0~N개의 인수를 설정한다. PARTITION BY 전체 집합을 기준에 의해 소그룹으로 나눈다. ORDER BY 어떤 항목에 대해서 정렬한다. WINDOWING - 행 기준의 범위를 정한다. - ROWS는 물리적 결과의 행 수이고, RANGE는 논리적인 값에 의한 범위이다. ∙ UNBOUNDED PRECEDING은 처음 행을 의미하며, UNBOUNDED FOLLOWING은 마지막 행을 의미한다. 그러므로 TOTAL_SAL에 처음부터 마지막까지의 합계(SUM(SAL))를 계산한 ..
[SQLD] SQL 활용 - Group Function 1️⃣ Group Function 1) ROLLUP ∙ ROLLUP은 GROUP BY의 칼럼에 대해서 Subtotal을 만들어 준다. ∙ ROLLUP을 할 때 GROUP BY구에 칼럼이 2개 이상 오면 순서에 따라서 결과가 달라진다. ∙ 위의 예는 DEPARMENT_ID에 대해서 GROUP BY로 급여합계를 계산하고 부서별 전체합계를 추가해서 계산했다. 즉, ROLLUP은 DEPARTMENT_ID에 대해서 기존 GROUP BY와는 다르게 부서별 전체합계를 게산하게 된다. ∙ DECODE문은 전체 합계를 조회할 때 '전체합계'라는 문자를 출력하기 위해서 사용된다. DECODE문을 사용해서 DEPARTMENT_ID가 NULL 과 같으면 '전체합계'라는 문자를 출력하고 그렇지 않으면 부서번호(DEPARTMEN..
[SQLD] SQL 활용 - Subquery 1️⃣ Main query와 Subquery ∙ Subquery는 SELECT문 내에 다시 SELECT문을 사용하는 SQL문이다. ∙ Subquery의 형태 - FROM구에 SELECT문을 사용하는 인라인 뷰(View). - SELECT문에 Subquery를 사용하는 스칼라 서브쿼리(Scala Subquery). - WHERE구에 SELECT문을 사용하면 서브쿼리(Subquery)라고 한다. ∙ WHERE 구에 있는 SELECT문은 서브쿼리(Subquery)이고 괄호 내에 SELECT문을 사용한다. ∙ 서브쿼리 밖에 있는 SELECT문은 메인쿼리(Mainquery)이다. ∙ FROM구에 SELECT문을 사용하여 가상의 테이블을 만드는 효과를 얻을 수 있다. ∙ FROM구에 SELECT문을 사용한 것인 인..
[SQLD] SQL 활용 - Connect by(계층형 조회) ∙ 계층형 조회는 Oracle DB에서 지원하는 것으로 계층형으로 데이터를 조회할 수 있다. ∙ 예를 들어 부장에서 차장, 차장에서 과장, 과장에서 대리, 대리에서 사원 순으로 트리 형태의 구조를 위에서 아래로 탐색하면서 조회하는 것이다. 역방향 조회도 가능하다. ∙ Connect by는 트리(Tree) 형태의 구조로 질의를 수행하는 것으로 START WITH구는 시작조건을 의미하고, CONNECT BY PRIOR는 조인 조건이다. Root 노드로부터 하위 노드의 질의를 실행한다. ∙ 계층형 조회에서 최대 계층의 수를 구하기 위한 문제, MAX(LEVEL)을 사용하여 최대 계층 수를 구한다. (즉, 게층형 구조에서 마지막 Leaf Node의 계층 값을 구한다. - EMPLOYEE_ID와 MANAGER_I..
[SQLD] SQL 활용 - Join 1️⃣ EQUI(등가) 조인(교집합) 1) EQUI(등가) 조인 ∙ 조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정이다. ∙ 조인의 가장 기본은 교집합을 만드는 것이다. ∙ 2개의 테이블 간에 일치하는 것을 조인한다. 2) INNER JOIN ∙ EQUI 조인과 마찬가지로 ISO 표준 SQL로 INNER JOIN이 있다. INNER JOIN은 ON구를 사용해서 테이블을 연결한다. 3) INTERSECT 연산 ∙ INTERSECT 연산은 2개의 테이블에서 교집합을 조회한다. (2개의 테이블에서 공통된 값을 조회한다.) 2️⃣ Non-EQUI(비등가) 조인 ∙ Non_EQUI는 2개의 테이블 간에 조인하는 경우 "="을 사용하지 않고 ">", "=", "