PART 1, 데이터 모델링의 이해
CHAPTER 1, 데이터 모델링의 이해
- 데이터베이스의 모델링은 '현실 세계를 단순화하여 표현하는 기법'이다.
- 모델링의 특징
1. 추상화 2. 단순화 3. 명확화
- 모델링의 세 가지 관점
1. 데이터 관점 2. 프로세스 관점 3. 데이터와 프로세스의 상관 관점
- 모델링의 세 가지 단계
1. 개념적 데이터 모델링 2. 논리적 데이터 모델링 3. 물리적 데이터 모델링
- 3단계 스키마 구조
1. 외부 스키마 : 사용자의 관점
- 개념 스키마 : 통합된 관점
- 내부 스키마 : 물리적인 관점
- 엔티티 특성에 따른 분류
1. 기본 속성 (상품 이름, 주민번호)
- 설계 속성 (학번, 사번)
- 파생 속성 (이벤트 응모 건수)
- 관계의 표기법에는 관계명, 관계차수, 관계선택사양이 포함된다.
- 주식별자 : 유일성, 최소성, 불변성, 존재성
CHAPTER 2, 데이터 모델과 SQL
- 정규화
1. 제1정규형 : 모든 속성은 반드시 하나의 값만 가져야 한다.
- 제2정규형 : 엔티티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다.
- 제3정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
- 반정규화 : 데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
1. 테이블 반정규화
PART 2, SQL 기본 및 활용
CHAPTER 1, SQL 기본
- 문자 함수
1. CHR
- LTRIM
- RTRIM
- TRIM
- SUBSTR
- LENGTH
- REPLACE
- 숫자 함수
1. ABS
- SIGN
- ROUND - 지정된 소수점 자릿수까지 반올림
- TRUNC - 지정된 소수점 자릿수까지 버림
- CEIL - 소수점 이하의 수를 올림
- FLOOR - 소수점 이하의 수를 버림
- MOD
- 두 번째 인자값이 0이면 첫 번째 인자값 반환
- 두 인자값 모두 음수이면 나머지도 그대로 음수
- 날짜 함수
1. SYSDATE - 현재 연, 월, 일, 시, 분, 초 반환
- EXTRACT - 날짜 데이터에서 특정 단위만을 출력하여 반환
- ADD_MONTHS - 날짜 데이터에서 특정 개월 수를 더한 날짜 반환
- 명시적 형변환 함수
1. TO_NUMBER
- TO_CHAR
- TO_DATE
- NULL 관련 함수
1. NVL - 인수1의 값이 NULL일 경우 인수2 반환
- NULLIF - 인수1과 인수2가 같으면 NULL 반환
- COALESCE - NULL이 아닌 최초의 인수 반환
- JOIN
1. EQUI JOIN
- Non EQUI JOIN
- OUTER JOIN
- STANDARD JOIN
1. INNER JOIN - JOIN 조건에 충족하는 데이터만 출력 (ON절 필수)
- OUTER JOIN
- LEFT OUTER JOIN - 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN
- FULL OUTER JOIN - 왼쪽, 오른쪽 테이블의 데이터가 모두 출력 (중복값 제거)
- NATURAL JOIN - A 테이블과 B 테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN
- CROSS JOIN
CHAPTER 2, SQL 활용
- 서브 쿼리
1. SELECT 절 - 스칼라 서브쿼리
- FROM 절 - 인라인 뷰
- WHERE 절, HAVING 절 - 중첩 서브쿼리
- 집합 연산자
1. UNION ALL - 합집합, 중복 출력
- UNION - 합집합, 중복 미출력
- INTERSECT - 교집합, 중복 미출력
- MINUS/EXCEPT - 차집합, 중복 미출력
- 그룹 함수
1. ROLLUP - 소그룹 간의 소계 및 총계를 계산하는 함수
- CUBE - 소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수 (조합할 수 있는 모든 조합)
- GROUPING SETS - 특정 항목에 대한 소계를 계산하는 함수
- GROUPING - 소계를 나타내는 Row를 구분할 수 있게 해준다. (TOTAL)
- 순위 함수
1. RANK - 같은 순위가 존재하면 존재하는 수만큼 다음 순위를 건너뛴다.
- DENSE_RANK - 같은 순위가 존재하더라도 다음 순위를 건너뛰지 않고 이어서 매긴다.
- ROW_NUMBER - 동일한 값이라도 각기 다른 순위를 부여 (계차수열 같이)
- 집계 함수
1. SUM
- MAX
- MIN
- AVG
- COUNT
- 행 순서 함수
1. FIRST_VALUE - 파티션 별 가장 선두에 위치한 데이터를 구하는 함수
- LAST_VALUE - 파티션 별 가장 끝에 위치한 데이터를 구하는 함수
- LAG - 파티션 별로 특정 수만큼 앞선 데이터를 구하는 함수
- LEAD - 파티션 별로 특정 수만큼 뒤에 있는 데이터를 구하는 함수
- 비율 함수
1. RATIO_TO_REPORT - 파티션 별 합계에서 차지하는 비율을 구하는 함수
- PERCENT_RANK - 해당 파티션의 맨 위 끝 행을 0, 맨 아래 끝 행을 1로 놓고 현재 행이 위치하는 백분위 순위 값을 구하는 함수
- CUME_DIST - 해당 파티션에서의 누적 백분율을 구하는 함수
- NTILE - 주어진 수만큼 행들을 n등분한 후 현재 행에 해당하는 등급을 구하는 함수
- TOP-N 쿼리
1. ROWNUM - 가짜 컬럼을 하나 만들어서 숫자 표기
CHAPTER 3, 관리 구문
- DML (Data Manipulation Language)
1. INSERT
- UPDATE
- DELETE
- MERGE
- TCL (Transaction Control Language)
1. COMMIT
- ROLLBACK
- SAVEPOINT
- DDL (Data Definition Language)
1. CREATE
- ALTER
- DCL (Data Control Language)
1. 유저 관련 명령어 (CREATE USER, ALTER USER, DROP USER)
- 권한 관련 명령어
- ROLE 관련 명령어