분류 전체보기
SQLD 2장 ] 요약 & 연습문제
SQLD 2장 ] 요약 & 연습문제
2016.03.021절 : 성능 데이터 모델링의 개요성능 데이터 모델링이란 데이터베이스 성능향상을 목적 으로 설계단계의 데이터 모델링 때부터정규화, 반정규화, 테이블통합, 테이블분할, 조인 구조, PK, FK 등의 여러가지 성능 과 관련된 사항 가지고데이터 모델링에 반영될 수 있도록 하는 것으로 정의된다. 2절 : 정규화와 성능설계를 할 때 정규화를 하는것은 기본적으로 데이터에 대한 중복성을 제거하여 주고, 데이터가 관심사별로처리가 되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다. 설계단계에서 무조건 반정규화는 안되며 기본적으로 정규화된 데이터 모델을 생성하도록 노력해야 한다. 3절 : 반정규화와 성능데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는..데이터를 조회..
SQLD 1장 ] 요약 & 연습문제
SQLD 1장 ] 요약 & 연습문제
2016.03.021절 : 데이터 모델의 이해일반적으로 모델링이라고 하는 개념은 일정한 표기법에 의해 자연의 현상, 업무적인 현상 등을 형상화 하는 것.데이터모델링은 데이터베이스 구축을 위한 분석과 설계의 핵심도구 이다.데이터모델링에서 가장 중요한 핵심개념은 엔터티, 속성, 관계 이다. 2절 : 엔터티데이터베이스를 구축할때 분석/설계 하는 관점에서 엔터티는"업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적, 영속적 으로 존재하는 단위" 로 정의된다.엔터티를 정의할 때 중요한 특징(속성의 존재, 2개 이상의 인스턴스 등)이 있다.엔터티를 분류할때는 기본엔터티, 중심엔터티, 행위엔터티 로 구분한다. 3절 : 속성속성이란 "업무에서 필요로 하는 엔터티에서 관리하고자 하는 최소의 데이터 단위" 라고 정의된다. 이..
SQLD 5-3 ] 조인 수행 원리
SQLD 5-3 ] 조인 수행 원리
2016.03.01조인 수행 원리 - 조인은 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다. 조인 기법은 두 개의 테이블을 조인할 때 사용할 수 있는 방법이고 종류로는 NL Join, Hash Join, Sort Merge Join 이 있다. NL JOIN - 프로그래밍에서 사용하는 FOR 문과 유사한 방식으로 조인을 수행한다. 반복문 외부에 있는 테이블을 선행테이블(외부테이블), 반복문 내부에 있는 테이블을 후행테이블(내부테이블) 이라고 한다.FOR 선행 테이블 읽음 → 외부 테이블(Outer Table) FOR 후행 테이블 읽음 → 내부 테이블(Inner Table) (선행 테이블과 후행 테이블 조인) 먼저 선행 테이블의 조건을 만족하는 행을 추출 하고. 후행 테이블을 ..
SQLD 5-2 ] 인덱스 기본
SQLD 5-2 ] 인덱스 기본
2016.03.01인덱스 특징과 종류 - 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다. 목적은 검색 성능의 최적화 이다. DML 작업은 테이블과 함께 인덱스도 같이 변경해야 하기 때문에 오히려 느려질 수도 있다는 단점이 있다. (따라오기 때문에) 트리 기반 인덱스 - 가장 일반적인 인덱스는 B-트리 인덱스 이다. Root Block : 대장Branch Block : 분기를 목적으로 한다. 다음 단계의 블록을 가리키는 포인터를 가지고 있다.Leaf Block : 제일 말단 Leaf Block 은 인덱스를 구성하는 칼럼의 데이터와 위치를 가리키는 식별자(RID, Record Identifier/Rowid) 로 구성되어 있다 인덱스 데이터는 인덱스를 구성하는 칼..
SQLD 5-1 ] 옵티마이저와 실행계획
SQLD 5-1 ] 옵티마이저와 실행계획
2016.03.01옵티마이저 - 옵티마이저는 사용자가 질의한 SQL 문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다 여러개의 방법 중.. 음.. 이게 제일 좋겠군! 하고 결정하는애. 그런데, SQL 문을 실행 해보고 이게 빠르군. 저게 빠르군 하는게 아니라서.. 실행 하기 전에 결정해야 하는 어려움이 있다. 결정하는 방식에는 규칙기반 옵티마이저 / 비용기반 옵티마이저 로 구분할 수 있다. 현재 대부분은 비용기반 옵티마이저만 제공한다고 한다. 규칙기반 옵티마이저 - 규칙기반 옵티마이저는 규칙(우선 순위) 를 가지고 실행계획을 생성한다. 순위엑세스 기법설명1Single Row By RowidROWID에 의한 단일 로우2 Single Row By Cluster Join클러스터 조인에 의한 단일 로..
SQLD 4-8 ] 절차형 SQL
SQLD 4-8 ] 절차형 SQL
2016.02.29절차형 SQL 개요 - 일반적인 개발 언어처럼 SQL 도 절차 지향 적인 프로그램이 가능하도록 제공하고 있다. ORACLE : PL/SQL DB2 : PL/SQL SQL SERVER : T-SQL 절차형 SQL 을 이용하여 만들수 있는 저장 모듈인 PROCEDURE / USER DEFINED RUNCTION / TRIGGER 에 대해 알아보자! PL/SQL - BLOCK 구조로 되어 있고, BLOCK 내에는 DML 문장과, QUERY 문장, 절차형 언어(IF, LOOP) 등을 사용할 수 있다. 1. PL/SQL 은 BLOCK 구조로 되어 있어 각 기능별 모듈화가 가능하다 2. 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다 3. IF, LOOP 등의 절차형 언어를 ..
SQLD 4-7 ] DCL (DATA CONTROL LANGUAGE)
SQLD 4-7 ] DCL (DATA CONTROL LANGUAGE)
2016.02.29DCL 이란? - 유저를 생성하고 권한을 제어할 수 있는 명령어. (지금까지 해왔던 걸 보면. DDL/DML/TCL 이 있었지.) 유저와 권한 - 보안을 위해서 새로운 유저를 생성해서 그 유저에게 권한 주고 뭐 이런건데 (관리자를 그냥 알려줄순 없어서..) ORACLE 에서 기본적으로 제공되는 유저들인 SYS, STSTEM, SCOTT 유저가 있다. 지금 쓰고 있는 슈퍼관리자 는 SYSTEM 이고. 추가로 SCOTT, SYS 가 있었네.ORACLE 과 SQL SERVER 의 사용자에 대한 아키텍쳐는 다른 면이 많다. ORACLE - 유저를 통해 데이터베이스에 접속. 아이디와 비밀번호 방식으로 데이터베이스의 인스턴스에 접속을 한다.유저에 해당하는 권한을 부여받는다. 구역마다 다른 ..
SQLD 4-6 ] 윈도우 함수(WINDOW FUNCTION)
SQLD 4-6 ] 윈도우 함수(WINDOW FUNCTION)
2016.02.29WINDOW FUNCTION - 칼럼과 칼럼과의 연산, 비교, 연결 집합 등 은 쉬운데.. 행과 행간의 관계 정의하거나 비교, 연산 하려고 만들었다! - 분석함수 나 순위함수 로도 알려졌다. - 중첩(NEST) 해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다! 윈도우함수의 종류 1. 그룹 내 순위 함수 -> RANK / DENSE_RANK / ROW_NUMBER 2. 그룹 내 집계 함수 -> SUM / MAX / MIN / AVG / COUNT 3. 그룹 내 행 순서 함수 -> FIRST_VALUE / LAST_VALUE / LAG / LEAD 4. 그룹 내 비율 관련 함수 -> CUME_DIST / PERCENT_RANK / NTILE / RAT..
SQLD 4-5 ] 그룹 함수(GROUP FUNCTION)
SQLD 4-5 ] 그룹 함수(GROUP FUNCTION)
2016.02.28데이터 분석 개요 - ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음 세 가지 함수를 정의하고 있다. 1. AGGREGATE FUNCTION 2. GROUP FUNCTION 3. WINDOW FUNCTION 1. AGGREGATE FUNCTION - GROUP FUNCTION 의 한 부분. 그 앞에서 배웠던 집계 함수들. COUNT, SUM, AVG, MAX, MIN 같은거 .. 2. GROUP FUNCTION - 이제야 좀 그룹 다운 기능을 제공하나? 스케일이 좀 커지나..?? - 결산 개념의 업무를 가지는 원가/판매 시스템 에서 소계, 중계, 합계 등 - 그룹 함수를 사용한다면 하나의 SQL 로 테이블을 한번만 읽어서 빠르게 처리할 수 있다. - 종류는.. - ROLL..
SQLD 4-4 ] 서브쿼리
SQLD 4-4 ] 서브쿼리
2016.02.27서브쿼리 - SQL 문 안에 SQL 문. 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다 서브쿼리를 쓸때 주의점1. 서브쿼리를 괄호호 감싸서 사용한다2. 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다. 단일 행 비교연산자는 서브쿼리의 결과가 반드시 1건 이하 이여야하고 복수 행 비교연산자는 서브쿼리의 결과 건수와 상관 없다.3. 서브쿼리에서는 ORDER BY 를 사용하지 못한다. ORDER BY 는 SELECT 절에서 오직 한 개만 올 수 있어서.. 메인 SELECT 의 마지막에 장식해야한다. 서브쿼리가 가능한 곳- SELECT 절- FROM 절- WHERE 절- HAVING 절- ORDER BY 절- INSERT 문의 VAL..
SQLD 4-3 ] 계층형 질의와 셀프 조인
SQLD 4-3 ] 계층형 질의와 셀프 조인
2016.02.27계층형 질의 - 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터 ? 그러니까, 한 테이블 내에서 사원 A 의 관리자 되는 사람은 지정 안되있고사원 B, 사원 C의 관리자는 사원 A 이다. ORACLE 계층형 질의 1. START WITH : 계층 구조 전개의 시작 위치를 지정하는 구문. (루트 데이터를 지정. 액세스)2. CONNECT BY : 다음에 전개될 자식 데이터를 지정하는 구문. 자식 데이터는 CONNECT BY 절에 있는 조건에 만족해야 한다.(조인)3. PRIOR : 저기엔 안나와있지만 CONNECT BY 절에 사용되며, 현재 읽은 칼럼을 지정한다. PRIOR 자식 = 부모 : 부모 -> 자식 방향으로 전개 PRIOR 부모 = 자식 : 자식 -> 부모 방향..
SQLD 4-2 ] 집합 연산자
SQLD 4-2 ] 집합 연산자
2016.02.26집합 연산자 (STANDARD JOIN) - 두 개 이상의 테이블에서 JOIN 을 사용하지 않고도 연관된 데이터를 조회할 수 있다고..?! - 집합 연산자를 이용하는 방법이다! 여러개의 질의의 결과를 연결하여 하나로 결합하는 방식. - SELECT 절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환 가능해야 한다. 합집합 (UNION/UNION ALL)교집합 (INTERSECT)차집합 (EXCEPT) select 칼럼1, 칼럼2, ...from 테이블1where group byhavingselect 칼럼1, 칼럼2, ...from 테이블2wheregroup byhavingorder by 1, 2;아 이렇게 select 덩어리가 2개 이상 인 거의..