no image
[SQLD] 31. 조인 수행 원리
제 3절 조인 수행 원리 조인이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다. SQL 문에서 FROM 절에 두 개 이상의 테이블이 나열될 경우 조인이 수행된다. 조인 연산은 두 테이블 사이에서 수행된다. 만일 FROM 절에 A, B, C 테이블을 조인할 경우, A,B를 먼저 조인하고 그 결과와 C를 조인하게 되는 과정을 거친다. 또한 각 조인을 수행할 때 기법을 달리하여 수행할 수 있다. 대표적인 조인 기법은 세가지가 있다. - NL Join- Sort Merge Join- Hash Join 1. NL Join - NL Join은 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행- 반복문의 외부에 있는 테이블을 선행 테이블 또는 외부 테이블(Outer Table)이라 함- ..
2016.09.04
no image
[SQLD] 30. 인덱스 기본
제 2절 인덱스 기본 1. 인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다. 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 인덱스의 기본적인 목적은 검색 성능의 최적화이다. 그러나 Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 떄문에 오히려 느려질 수 있다. 가. 트리 기반 인덱스- DBMS에서 가장 일반적인 인덱스는 B-트리 인덱스- 브랜치 블록(Branch Block), 리프 블록(Leaf Block), 루트 블록(Root Block)으로 구성 브랜치 블록 1. 분기를 목적으로 하는 블록 2. 다음 단계의 블록을 가리키는 포인터를 가짐 리프 블록 1. 가장 아래 단계에 존..
2016.09.04
no image
[SQLD] 29. 옵티마이저와 실행계획
제 1절 옵티마이저와 실행계획 1. 옵티마이저 옵티마이저(Optimizer)는 사용자가 질의한 SQL문에 대해 최적의 실행방법을 결정하는 역할을 수행한다. 이러한 최적의 실행방법을 실행계획(Execution Plan)이라고 한다. 다양한 실행 방법 들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할이다. 관계형 데이터베이스는 옵티마이저가 결정한 실행 방법대로 실행 엔진이 데이터를 처리하여 결과 데이터를 사용자에게 전달할 뿐이다. - 규칙기반 옵티마이저 (RBO, Rule Based Optimizer)- 비용기반 옵티마이저 (CBO, Cost Based Optimizer) 현재 대부분의 관계형 데이터베이스는 비용기반 옵티마이저만을 제공한다. 규칙기반 옵티마이저의 규칙들을 알아두면 보편 타당..
2016.09.04
no image
[SQLD] 28. 절차형 SQL
제 8절 절차형 SQL 1. 절차형 SQL 개요 SQL 언어에서도 일반적인 개발 언어처럼 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language) / SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공하고 있다. 이는 조건에 따른 분기처리를 이용해 특정 기능을 수행하는 저장 모듈을 생성할 수 있고, 절차형 SQL을 통해 생성할 수 있는 모듈인 Procedure, User Defined Function, Trigger에 대해서 간단하게 살펴보도록 한다. 2. PL / SQL 개요가. PL / SQL 특징 Oracle의 PL / SQL은 Block 구조로 되어있고, 블럭 내에는 DML 문장과 QUERY 문장, 그리고..
2016.09.04
no image
[SQLD] 27.DCL(DATA CONTROL LANGUAGE)
제 7절 DCL(DATA CONTROL LANGUAGE) 1. DCL 개요 - DDL : 테이블 생성과 조작에 관련된 명령어- DML : 데이터를 조작하기 위한 명령어- TCL : 트랜잭션을 제어하기 위한 명령어 (COMMIT, ROLLBACK, SAVEPOINT 등)- DCL: 유저를 생성하고 권한을 제어할 수 있는 명령어 2. 유저와 권한 데이터베이스 시스템을 운영할 때 새로운 유저를 생성하고, 생성한 유저에게 공유할 테이블이나 기타 오브젝트에 대한 접근 권한만을 부여한다면 문제는 쉽게 해결할 수 있다. 대부분의 데이터베이스는 데이터 보호와 보안을 위해서 유저와 권한을 관리하고 있는데, 오라클에서는 기본적으로 제공되는 유저들인 SYS, SYSTEM, SCOTT 유저에 대해서 간단하게 알아보고자 한다...
2016.09.02
[SQLD] 26. 윈도우 함수(WINDOW FUNCTION)
제 6절 윈도우 함수(WINDOW FUNCTION) 1. WINDOW FUNCTION 개요 기존 관계형 데이터베이스는 칼럼과 칼럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행간의 관계를 정의하거나, 행과 행간을 비교, 연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 일이었다. 하지만, 윈도우 함수를 이용한다면 행과 행간의 관계를 쉽게 정의할 수 있게 된다. 분석 함수(ANALYTIC FUNCTION)나 순위 함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터 웨어하우스에서 발전한 기능이다. 다른 함수들처럼 중첩해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다. - 그룹 내 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER-..
2016.09.01
[SQLD] 25. 그룹함수(GROUP FUNCTION)
제 5절 그룹 함수(GROUP FUNCTION) 1. 데이터 분석 개요데이터 분석을 위한 세가지 함수는 다음과 같다.- AGGREGATE FUNCTION- GROUP FUNCTION- WINDOW FUNCTION 1) AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION 이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류할 수 있다. 앞서 포스팅했던 COUNT, SUN, AVG, MAX 와 같은 함수들이 집계함수에 속한다. 2) GROUP FUNCTION 결산개념을 가지는 업무의 경우, 소계, 중계, 합계, 총 합계 등 여러 레벨의 결산 보고서를 만드는 것이 중요 업무 중의 하나이다. 그런데 이러한 레벨별 집계를 위해서는 여러 단계의 SQL을 UNION, UNION ..
2016.09.01
no image
[SQLD] 24. 서브쿼리
제 4절 서브쿼리 서브쿼리(Subquery)란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL 문을 말한다. 서브쿼리는 다음과 같이 메인쿼리가 서브쿼리를 포함하는 종속적인 관계에 놓여있다. - 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있음- 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음- 서브쿼리 칼럼을 표시해야 한다면 스칼라 서브쿼리, 함수 등을 사용- 서브쿼리는 서브쿼리 레벨과는 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성- 서브쿼리는 괄호로 감싸서 사용- 서브쿼리는 단일행 또는 복수행 비교연산자와 함께 사용 가능- 서브쿼리에서는 ORDER BY 절을 사용하지 못하고, 메인쿼리 마지막 문장에 사용 가능 - 서브쿼리가 SQL 문에서 사용 가능한 곳SELECT절, FROM절, WHERE절, HA..
2016.09.01
no image
[SQLD] 23. 계층형 질의와 셀프 조인
제 3절 계층형 질의와 셀프 조인 1. 계층형 질의 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의(Hierarchical Query)를 사용한다. 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다. 이는 엔티티를 순환관계 데이터 모델로 설계한 경우 계층형 데이터가 발생하게 된다. 순환관계 데이터 모델의 예로는 조직, 사원, 메뉴 등이 있다. 가. 오라클(Oracle) 계층형 질의 오라클은 계층형 질의를 지원하기 위해 아래와 같이 계층형 질의 구문을 제공한다. - START WITH : 계층 구조 전개의 시작 위치를 지정하는 구문이다. 즉, 루트데이터를 지정한다.- CONNECT BY : 다음에 전개될 자식 데이터를 지정하는 구문이다. 자식..
2016.09.01
no image
[SQLD] 22. 집합 연산자 (SET OPERATOR)
제 2절 집합 연산자(SET OPERATOR) 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데, 바로 집합 연산자(Set Operator)를 사용하는 방법이다. 기존 조인에서는 FROM 절에 검색하고자 하는 테이블을 나열하고, WHERE 절에 조인 조건을 기술하여 원하는 데이터를 조회하였으나, 집합연산자를 사용하게 되면, 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용한다. 즉, 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어주는 역할을 하게 된다. 집합 연산자는 SELECT 절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 교환 가능해야한다. UNION, INTERSECT, EX..
2016.08.31
no image
[SQLD] 21. 표준 조인(STANDARD JOIN)
제 1절 표준 조인(STANDARD JOIN) 1. STANDARD SQL 개요 대표적인 ANSI / ISO 표준 SQL의 기능은 다음 내용을 포함한다- STANDARD JOIN 기능 추가 (CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)- SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들- ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능- WINDOW FUNCTION 같은 새로운 개념의 분석 기능들 가. 일반 집합 연산자 현재 사용하는 SQL의 많은 기능이 관계형 데이터베이스의 이론을 수립한 E.F.Codd 박사의 논문에 언급이 되어 있다. 논문에 언급된 8가지 관계형 대수는 다시 각각4개의 일반 집합 연산자와 순..
2016.08.24
no image
[SQLD] 20. 조인(JOIN)
제 9절 조인(JOIN) 1. JOIN 개요 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 JOIN이라고 하며, 일반적으로 사용되는 SQL 문장 상당수가 JOIN이라고 생각하면 된다. JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이라고 할 수 있다. 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. FROM 절에 여러 테이블이 나타나더라도 SQL 에서 데이터를 처리할 떄는 단 두 개의 집합 간에만 조인이 일어난다는 것이다. FROM 절에 A, B, C 테이블이 나열되었더라도, 특정..
2016.08.18