SQL 개발자(SQLD, SQL Developer) 1.데이터 모델링의 이해1-1. 데이터 모델링의 이해1-1-1. 데이터 모델의 이해 1-1-2. 엔티티1-1-3. 속성1-1-4. 관계1-1-5. 식별자1-2. 데이터 모델과 성능1-2-1. 성능 데이터 모델링의 개요 1-2-2. 정규화와 성능1-2-3. 반정규화와 성능1-2-4. 대량 데이터에 따른 성능1-2-5. 데이터베이스 구조와 성능1-2-6. 분산 데이터베이스와 성능 2. SQL 기본 및 활용2-1. SQL 기본2-1-1. 관계형 데이터베이스 개요 2-1-2. DDL2-1-3. DML2-1-4. TCL2-1-5. WHERE2-1-6. 함수2-1-7. GROUP BY, HAVING절2-1-8. ORDER BY절2-1-9. 조인(JOIN)2-2. ..
l 조인이란?- 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다.- SQL문에서 FROM절에 두 개 이상의 테이블이 나열될 경우 조인이 수행된다.- 조인 연산은 두 테이블 사이에서 수행된다.- 조인의 종류 : NL Join, Sort Merge Join, Hash Join 1. NL JoinNL Join 정의- 두 개의 테이블을 중첩된 반복문처럼 조인을 수행한다.- 반복문 외부(처음 테이블)에 있는 테이블을 선행테이블 또는 외부 테이블, 반복문 내부(두 번째 테이블)에 있는 테이블을 후행테이블 또는 내부 테이블이라고 부른다. - for 선행 테이블 읽음 (외부 테이블(Outer Table)) for 후행 테이블 읽음 (내부 테이블(Inner Table)) (선행 테이블과 후행 테이블 조인) NL ..
1. 인덱스 특징과 종류인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다.Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점이 존재한다.가. 트리 기반 인덱스 - B-트리 인덱스 = 브랜치 블록(Branch Block)과 리프 블록(Leaf Block)n 브랜치 블록 중에서 가장 사우이에 있는 블록을 루트 블록(Root Block)n 브랜치 블록은 다음 단계의 블록을 가리키는 포인터를 가지고 있다.n 리프 블록은 트리의가장 아래 단계에 존재한다.n 리프블록은 인덱스를 구성하는 칼럼의 데이터와 해당 데이터를 가지고 있는 행의 위치를 가리키는 레코드 식별자(RID, Recode Iden..
1. 옵티마이저- 옵티마이저(Optimizer) 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할 수행 이러한 최적의 실행방법을 실행계획(Execution plan)이라 한다. - 최적의 실행 방법 결정 : 어떤 방법으로 처리하는 것이 최소 일량으로 동일한 일을 처리할 수 있을지 결정하는 것.- 옵티마이저가 최적의 실행방법을 결정하는 방식n 규칙기반 옵티마이저(RBO, Rule Based Optimizer)n 비용기반 옵티마이저(CBO, Cost Based Optimizer)가. 규칙기반 옵티마이저- 규칙기반 옵티마이저는 규칙(우선 순위)을 가지고 실행계획을 생성한다.- 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측 가능하다. 인덱스를 이용한 액세스 방식이 전체 ..
1. 절차형 SQL 개요- 일반적인 개발 언어처럼 SQL에도 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 절차형 SQL 제공n Oracle : PL(Procedural Language)/SQLn DB2 : SQL/PLn SQL Server : T-SQL- 절차형 SQ을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈 생성가능- 절차형 SQL을 이용하여 만들수 있는 저장모듈n Proceduren User Defined Functionn Trigger 2. PL/SQL 개요가. PL/SQL 특징- Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP)등을 사용..
1. DCL 개요- 유저를 생성하고 권한을 제어할 수 있는 명령어2. 유저와 권한 DBMS 사용자에 대한 차이점 Oracle 유저를통해 데이터베이스에 접속하는 형태이다. 즉, 아이디와 비밀번호 방식으로 인스턴스에 접속을 하고 그에 해당하는 스키마에 오브젝트 생성 등의 권한을 부여받게 된다. SQL Server 인스턴스에 접속하기 위해 로그인이라는 것을 생성하게 되며, 인스턴스 내에 조재하는 다수의 데이터베이스에 연결하여 작업하기 위해 유저를 생성한후 로그인과 유저를 매핑해 주어야 한다. 더 나아가 특정 유저는 특정 데이터베이스 내의 특정 스키마에 대해 권한을 부여 받을 수 있다. 가. 유저 생성과 시스템 권한 부여n 유저를 생성하고 데이터베이스에 접속한다. 하지만 데이터베이스에 접속했다고 해서 테이블, ..
1. WINDOW FUNCTION 개요- 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수 - WINDOW FUNCTION 종류n 순위(RANK) 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER (ANSI/ISO SQL표준 / Oracle / SQL Server 등 대부분 DBMS지원)n 집계(AGGREGATE) 관련 함수 : SUM, MAX, MIN, AVG, COUNT (ANSI/ISO SQL표준 / Oracle / SQL Server 등 대부분 DBMS지원) * SQL Server의 경우 집계 함수는 OVER절 내의 ORDER BY 구문을 지원하지 않는다.n 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD (Oralce에서만 지원되는 함수)n..
1. 데이터 분석 개요 - ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음 세 가지 함수를 정의한다. n AGGREGATE FUNCTION n GROUP FUNCTION n WINDOW FUNCTION - AGGREGATE FUNCTION n GROUP AGGREGATE FUNCTION이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류할 수 있다. n COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함되어 있다. - GROUP FUNCTION n ROLLUP은 GROUP BY의 확장된 형태로 사용하기가 쉬우며 병렬로 수행이 가능하기 때문에 매우 효과적일 뿐 아니라 시간 및 지역처럼 계층적 분류를 포함하고 있는 데이터의 집계에 적합하도록 되어있다. n CUBE는..
n 서브쿼리(Subquery)란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말한다. n 서브쿼리를 사용할 때 다음 사항을 주의① 서브쿼리를 괄호로 감싸서 사용한다.② 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다. 단일 행 비교연산자는 서브쿼리의 결과가 반드시 1건 이하이어야 하고 복수행 행 비교연산자는 서브쿼리의 결과 건수와 상관없다.③ 서브쿼리에서는 ORDER BY절을 사용하지 못한다. ORDER BY절은 SELECT 절에서 오직 한 개만 올 수 있기 때문에 ORDER BY절은 메인쿼리의 마지막 문장에 위치해야 한다. n 서브쿼리가 SQL문에서 사용이 가능한 곳은 다음과 같다.- SELECT절, FROM절, WHERE절,..
1. 계층형 질의- 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의(Hierarchical Query)를 사용한다. - 계층형 데이터란?n 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터. ex) 사원 테이블에서는 사원들 사이에 상위 사원(관리자)과 하위 사원 관계가 존재하고 조직 테이블에서는 조직들 사이에 상위 조직과 하위 조직 관계가 존재.n 엔티티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터 발생n 순환관계 데이터 모델 ex) 조직, 사원, 메뉴 등 가. Oracle 계층형 질의 가상 칼럼 설명 LEVEL 루드 데이터이면 1, 그 하위 데이터이면 2이다. 리프(Leaf) 데이터까지 1씩 증가한다. CONNECT_BY_ISLEAF 전개 과정에서 해당 데..