Transaction
특성: ACID
- Atomicity 원자성
- Consistency 일관성
- Isolation 격리성
- Durability 영속성
제어: TLC(Transaction Control Language)
- COMMIT 트랜잭션 확정
- ROLLBACK 트랜잭션 취소
- CHECKPOINT 저장 시기 설정
병행 제어
- 미보장 시 문제점
갱신 손실, 현황 파악오류, 모순성, 연쇄복귀
- 병행 제어 기법의 종류
로킹, 낙관적 검증, 타임 스탬프 순서, 다중버전 동시성 제어
고립화 수준(격리성 주요 기법)
- Read Uncommitted
- Read Committed
- Repeatable Read
- Serializable Read
회복 기법(영속성 주요 기법)
- REDO: 적재 이후 일어난 병경만 로그
- UNDO: 모든 변경 내용을 취소
- 로그 기반
- 체크 포인트
- 그림자 페이징
DDL(Data Definition Language)
대상
- 도메인: 하나의 속성이 가질 수 있는 원자값들의 집합
- 스키마: 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
- 외부 스키마: 사용자나 개발자의 관점에서 필요로 하는 데이터베이스의 논리적 구조
사용자 뷰
= 서브스키마
- 개념 스키마: 데이터베이스의 전체적인 논리적 구조
전체적인 뷰
- 내부 스키마: 물리적 저장 장치의 관점에서 보는 데이터베이스 구조
- 테이블: 데이터 저장 공간
- 뷰: 가상의 데이블 -> 단순 질의어 사용하기 위해
- 인덱스: 검색을 빠르게 하기 위한 데이터 구조
순서, 해시, 비트맵, 함수기반, 단일, 결합
명령어
테이블
- CREATE
- PRIMARY KEY 기본키
- FOREIGN KEY 외래키
- UNIQUE 유일한 값을 가짐
- NOT NULL
- CHECK 조건
- DEFAULT 기본값
- ALTER
- ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
- ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
- DROP: 테이블 삭제
- DROP TABLE 테이블명 [CASCADE|RESTRICT];
- CASCADE: 연쇄 제거
- RESTRICT: 참조 중이면 제거 안함
- TRANCATE: 테이블 내의 모든 데이터 삭제
뷰
- CREATE
- CREATE OR REPLACE VIEW
- CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
- DROP
인덱스
- CREATE
- CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 2, ...);
- ALTER
- ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 2, ...);
- DROP
DML(Data Manipulation Language)
SELECT 명령어
- SELETE
- FROM
- WHERE
- BETWEEN, IN, LIKE, IS NULL
- GROUP BY
- HAVING
- ORDER BY
JOIN
- Inner Join : 내부 조인
- Outer Join
- Left Outer Join: 왼쪽 테이블의 모든 값이 출력
- Right Outer Join: 오른쪽 테이블의 모든 값이 출력
- Full Outer Join: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력
- Cross Join: 상호 조인
카티션 곱(cartesian product)
결과의 전체 행 개수 = 두 테이블의 각 행의 개수 곱한 수
- Self Join: 자체 조인
컬럼간의 관계를 이용해서 데이터를 추출할 때
하나의 테이블에 여러 별명을 붙여 다른 테이블인 것처럼 조인
Sub-Query
SELECT... FROM... WHERE...
SELECT... FROM... WHERE...
Set Operator
- UNION: 중복 레코드 제외
- UNION ALL: 중복 레코드 허용
- INTERSECT: 중복 레코드만 포함
- MINUS: 비교 레코드 제외
INSERT 명령어
데이터 삽입
- INSERT INTO 테이블명(속성명1, ...)
- VALUES (데이터1, ...)
UPDATE 명령어
데이터 변경
- UPDATE 테이블명
- SET 속성명 = 데이터, ...
- WHERE 조건;
DELETE 명령어
데이터 삭제
- DELETE FROM 테이블명
- WHERE 조건;
DCL(Data Control Language)
GRANT 명령어
사용 권한 부여
REVOKE 명령어
사용 권한 취소
- REVOKE 권한 ON 테이블 FROM 사용자;
집계성 SQL
데이터 분석 함수
다중 행 연산자
- IN: 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
- ANY: 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참
- SOME
- ALL: 값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참
- EXISTS
집계 함수
- COUNT
- SUM
- AVG
- MAX
- MIN
- STDDEV
- VARIANCE
그룹 함수
ROLLUP
- 지정된 컬럼의 소계 등 중간 집계 값을 산출하기 위한 그룹 함수
그룹핑이 인수의 순서에 영향을 받음, 소계와 총계 보여줌
SELECT [조회 컬럼, SUM(컬럼), AVG(컬럼) AS ...]
FROM [테이블]
GROUP BY ROLLUP (묶는 기준, ...)
CUBE
- 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수
모든 그룹핑 경우의 수에 대한 소계와 총계를 보여줌
SELECT [조회 컬럼, SUM(컬럼), AVG(컬럼) AS ...]
FROM [테이블]
GROUP BY CUBE (묶는 기준, ...)
GROUPING SETS
- 집계 대상 컬럼들에 대한 개별 집계를 구할 수 있음.
- ROLLUP, CUBE와 달리 컬럼간 순서와 무관한 결과를 얻을 수 있음.
그룹핑 단순화, 계층 구조가 없으며 소계만 보여줌
SELECT [조회 컬럼, SUM(컬럼), AVG(컬럼) AS ...]
FROM [테이블]
GROUP BY GROUPING SETS (묶는 기준, ...(괄호로 컬럼을 묶어 집합별 소계받을수있음))
윈도 함수(= OLAP 함수)
- 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위한 함수
SELECT 함수명(파라미터)
OVER
([PARTITION BY 컬럼1, ...][ORDER BY 컬럼1, ...])
FROM 테이블명
순위 함수
- RANK
- 동일 순위의 레코드 존재 시 후순위는 넘어감
(2위, 2위, 2위, 5위, 6위, ...)
- SELECT RANK() OVER (ORDER BY []) FROM 테이블
- DENSE_RANK
- 동일 순위의 레코드 존재 시에도 후순위 넘어가지 않음
(2위, 2위, 2위, 3위, 4위, ...)
- ROW_NUMBER
- 동일 순위의 값이 존재해도 무관하게 연속 번호 부여
(2위, 3위, 4위, 5위, 6위, ...)
OLAP 의사결정 지원 시스템
- Roll-Up
- Drill-Down
- Slicing
- Dicing
- Pivoting
절차형 SQL
프로시저
일련의 쿼리들을 하나의 함수처엄 실행하기 위한 쿼리의 집합
사용자 정의 함수
일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환
트리거
이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL