SMALL
1. 트랜잭션
- 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
2. 트랜잭션의 특성 (ACID)
- 원자성 (Atomicity )
- 분해가 불가능한 작업의 최소 단위
- 연산 전체가 성공 또는 실패 (All or Nothing)
- 하나라도 실패할 경우 전체가 취소되어야 하는 특성
- Commit / Rollback
- 회복성 보장
- 일관성 (Consistency)
- 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스의 상태를 보전해야 하는 특성
- 무결성 제약 조건
- 동시성 제어
- 격리성 (Isolation)
- 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가한 특성
- Read Uncommitted
- Read Committed
- Repeatable Read
- Serializable
- 영속성 (Durability)
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성
- 회복기법
3. 트랜잭션의 상태 (활부완실철)
- 활동 상태 (Active) : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
- 부분 완료 상태 (Partiaclly Committed) : 마지막 명령문이 실행된 후에 가지는 상태
- 완료 상태 (Committed) : 트랜잭션이 성공적으로 완료된 후 가지는 상태
- 실패 상태( Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
- 철회 상태(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태
4. TCL(Transaction Control Language) 명령어 (커롤체)
- COMMIT : 트랜잭션 확정 : 트랜잭션을 메모리에 영구적으로 저장하는 명령어
- ROLLBACK : 트랜잭션 취소 : 트랜잭션 내역을 저장 무효화시키는 명령어
- CHECKPOINT : 저장 시기 결정 : ROLLBACK을 위한 시점을 지정하는 명령어
5. 병행 제어 목적
- 데이터베이스의 공유를 최대화
- 시스템의 활용도를 최대화
- 데이터베이스의 일관성 유지
- 사용자에 대한 응답시간 최소화
6. 병행 제어 미보장 시 문제점 (갱현모연)
- 갱신 손실 (Lost Update)
- 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 엎어 쓸 때 발생하는 오류
- 현행 파악 오류 (Dirty Read)
- 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
- 모순성 (Inconsistency)
- 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
- 연쇄복귀 (Cascding Rollback)
- 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류
7. 병행 제어 기법 종류 (로 낙타다)
- 로킹 (Locking)
- 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 작아지면 데이터베이스 공유도 증가
- 로킹 단위가 작아지면 로킹 오버헤드 증가
- 한꺼번에 로킹할 수 있는 객체의 크기를 로킹 단위라고 함
- 낙관적 검증
- 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터 베이스에 반영하는 기법
- 타임 스탬스 순서 (Time Stamp Ordering)
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
- 다중 버전 동시성 제어(MVCC; Multi Version Concurrency Control)
- 트랜잭션의 타임 스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
8. 데이터베이스 고립화 수준(격리성 주요 기법) 종류
- Read Uncommitted
- 한 트랜잭션에서 연산(갱신) 중인 (아직 커밋되기 전) 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준
- 연산 중인 데이터에 대한 연산은 불허
- Read Committed
- 한 트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 연산 대상 데이터에 대한 읽기를 제한하는 수준
- 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용
- Repeatable Read
- 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신, 삭제를 제한하는 수준
- Serializable Read
- 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준
9. 회복기법 종류 (회로 체크)
- 로그 기반 회복 기법
- 지연 갱신 회복 기법 (Deferred Update)
- 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
- 즉각 갱신 회복 기법 (Immediate Update)
- 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
- 체크 포인트 회복 기법 (Checkpoint Recovery)
- 장애 발생 시 검사점 이후 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
- 그림자 페이징 회복 기법 (Shadow Paging Recovery)
- 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법
- 지연 갱신 회복 기법 (Deferred Update)
10. DDL(Data Definition Language - 데이터 정의어) 대상 (도스테뷰인)
- 도메인 (Domain)
- 하나의 속성이 가질 수 있는 원자값들의 집합
- 속성의 데이터 타입과크기, 제약조건 등의 정보
- 스키마 (Schema)
- 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
- 외부 스키마 (External Schema)
- 사용자나 개발자의 관점에서 필요로하는 데이터베이스의 논리적 구조
- 사용자 뷰를 나타냄
- 서브 스키마로 불림
- 개념 스키마 (Conceptual Schema)
- 데이터베이의 전체적인 논리적 구조
- 전체적인 뷰를 나타냄
- 개체 간의 관계, 제약조건, 접근 권한, 무결성, 보안에 대해 정의
- 내부 스키마 (Internal Schema)
- 물리적 자장장치의관점에서 보는 데이터베이스 구조
- 실제로 데이터 베이스에 저장 될 레코드의 형식을 정의하고 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 표현
- 테이블 (Table)
- 데이터 저장 공간
- 데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체
- 하나의 DB내에 여러개의 테이블로 구성될 수 있고, 릴레이션 혹은 엔터티라고도함
- 뷰 (View)
- 하나 이상의 물리 테이블에서 유도되는 가상의 테이블
- 인덱스 (Index)
- 검색을 빠르게하기 위한 데이터 구조
- 데이터를 빠르게 찾을 수 있는 수단으로서, 테이블에 대한 조회 속도를 높여주는 자료구조
- 기본키(PK) 컬럼은 자동으로 인덱스가 생성됨
- 테이블의 컬럼에 인덱스가 없는 경우, 테이블의 전체 내용을 검색 (Table Full Scan)
11. 뷰의 장점
- 논리적 데이터 독립성 제공
- 뷰는 논리 테이블 = 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
- 사용자 데이터 관리 용이
- 복수 테이블에 존재하는 여러 종류의 데이터에 대해 단순한 질의어 사용 가능
- 데이터 보안의 용이
- 중요 보안 데이터를 저장 중인 테이블에는 접근 불허
- 해당 테이블의 일부 정보만을 볼 수 있는 뷰에는 접근을 허용
- 보안 데이터에 대한 접근 제어 가능
12. 뷰의 단점
- 뷰 자체 인덱스 불가
- 인덱스는 물리적으로 저장된 데이터를 대상으로 하기에 논리적 구성인 뷰 자체는 인덱스를 가지지 못함
- 뷰 정의 변경 불가
- 뷰의 정의를 변경하려면 뷰를 삭제하고 재생성
- 데이터 변경 제약 존재
- 뷰의 내용에 대한 삽입, 삭제, 변경 제약이 있음
13. 인덱스의 종류 (순해비함 단결클)
- 순서 인덱스 (Ordering Index)
- 데이터가 정렬된 순서로 생성되는 인덱스
- B-Tree 알고리즘활용 (내림차순, 오름차순 지정 가능)
- 해시 인덱스 (Hash Index)
- 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스
- 데이터 접근 비용 균일, 튜플(Row) 양에 무관
- 비트맵 인덱스(Bitmap Index)
- 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스
- 수정 변경이 적을 경우 유용
- 함수 기반 인덱스 (Functional Index)
- 수식이나 함수를 적용하여 만든 인덱스
- 단일 인덱스 (Singled Index)
- 하나의 컬럼으로만 구성한 인덱스
- 주 사용 컬럼이 하나일 경우 사용
- 결합 인덱스 (Concatenated Index)
- 두 개 이상의 컬럼으로 구성한 인덱스
- WHERE 조건으로 사용하는 빈도가 높은 경우 사용
- 클러스터드 인덱스 (Clustered Index)
- 기본키 기준으로 레코드를 묶어서 저장하는 인데그
- 저장 데이터의 물리적 순서에 따라 인덱스 생성
- 특정 범위 검색 시 유리함
14. DDL 명령어 (크알드트)
- CREATE - 생성
- ALTER - 수정
- DROP -삭제 - 오브젝트 삭제
- TRUNCATE - 삭제 - 오브젝스 내용 삭제
15. CREATE
- CREATE TABLE 테이블 명;
- CREATE VIEW 뷰이름 AS 조회쿼리; (ORDER BY / GROUP BY 사용 불가)
- CREATE OR REPLAC VIEW 뷰이름 AS 조회쿼리;
- Create [UNIQUE…] INDEX 인덱스 명 ON 테이블명(컬럼명1, 컬럼명 , …);
16. ALTER
- ALTER TABLE 테이블 명 ADD 컬럼명 데이터타입 제약조건;
- ALTER TABLE 테이블 명 MODIFY 컬럼명 데이터타입 제약조건;
- ALTER TABLE 테이블명 DROP 컬럼명;
- ALTER [UNIQUE…] INDEX 인덱스 명 ON 테이블(컬럼명1, 컬럼명2, …);
17. DROP
- DROP TABLE 테이블명 [CASCADE | RESTRICT];
- CASCADE : 참조 테이블까지 연쇄 제거
- RESTRICT : 다른 테이블이 삭제될 때 테이블을 참조 중이면 제거하지 않음
- DROP VIEW 뷰이름;
- DROP INDEX 인덱스 명;
18. TRUNCATE
- TRUNCATE TALBE 테이블명;
19. DML (Data Manipulation Language - 데이터 조작어) 유형 (세인업데)
- SELECT - 조회
- INSERT - 삽입
- UPDATE - 갱신
- DELETE - 삭제
20. SELECT 명령문 (셀프 웨 구해오)
- SELECT절
- All / DISTINCT
- FROM
- WHERE
- GROUP BY
- ORDER BY
- SELECT 컬럼명 FROM 테이블명;
- SELECT 컬럼명 FROM 테이블명 WHERE 조건;
- SELECT COUNT(DISTINCT 컬럼명) FROM 테이블명;
21. WHERE 절
- WHERE 컬럼명 BETWEEN 범위1 AND 범위2;
- WHERE 컬럼명 IN(조건1, 조건2, 조건3);
- WHERE 컬럼명 LIKE ‘조건문자(열)%’; - 조건 문자(열)로 시작하는 문자열 검색
- WHERE 컬럼명 LIKE ‘[조건문자들]%’; - 시작 문자가 조건 문자들 중 하나로 시작하는 문자열 검색
- WHERE 컬럼명 IS NULL / IS NOT NULL;
22. GROUP BY 절
- GROUP BY 컬럼명;
- SELECT 컬럼명1 SUM(컬럼명2) AS 별칭 FROM 테이블명 GROUP BY 컬럼명;
- SELECT 컬럼명1, 컬럼명2, SUM(컬럼명3) AS 별칭 FROM 테이블명 GROUP BY 컬럼명4, 컬럼명5;
23. HAVING 절
- SELECT 컬럼명1, 컬럼명2, SUM(컬럼명3) AS 별칭 FROM 테이블명 GROUP BY 컬럼명4 HAVING 조건문;
24. ORDER BY 절
- ORDER BY 컬럼명;
- ORDER BY 컬럼명1, 컬럼명2; - 컬럼명1로 먼저 정렬 후 같은 값일 경우 컬럼명2로 정렬
- ORDER BY 컬럼명1 DESC, 컬럼명2 ASC; - 컬럼명1을 내림차순으로 정렬 후 같은 값일 경우 컬럼명2로 오름차순 정렬
25. 조인 (JOIN)
- 내부 조인
- SELECT A.컬럼1, A.컬럼2, B.컬럼3 FROM 테이블1 A [INNER] JOIN 테이블2 B ON 조인 조건 [WHERE 검색 조건];
- 외부 조인
- SELECT A.컬럼1, A. 컬럼2, B.컬럼3 FROM 테이블1 A LEFT [OUTER] JOIN 테이블2 B ON 조인 조건 [WHERE 검색 조건];
- SELECT A.컬럼1, A.컬럼2, B.컬럼3 FROM 테이블1 A RIGHT [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];
- SELECT A.컬럼1, A.컬럼2, B.컬럼3 FROM 테이블1 A FULL [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];
- 교차조인
- SELECT 컬럼1, 컬럼2 FROM 테이블 1 CROSS JOIN 테이블2;
- 셀프 조인
- SELECT A.컬럼1, A.컬럼2, B.컬럼3 FROM 테이블1 A [INNER] JOIN 테이블1 B ON 조인 조건 [WHERE 검색조건];
26. 집합 연산자
- UNION : 중복 행이 제거된 쿼리 결과를 반환
- UNION ALL : 중복 행이 제거되지 않은 쿼리 결과 반환
- INTERSECT : 두 쿼리 결과에 공통적으로 전재하는 결과를 반환
- MINUS : 첫 쿼리에 있고 두번째 쿼리에는 없는 결과 반환
27. INSERT
- INSERT INTO 테이블명(속성명1, …) VALUES (데이터1, …);
28. UPDATE
- UPDATE 테이블명 SET 속성명 = 데이터 , … WHERE 조건;
29. DELETE
- DELTE FROM 테이블 명 WHERE 조건;
30. DCL (Data Control Language - 데이터 제어어) 종류
- GRANT - 사용 권한 부여 (그온투)
- GRANT 권한 ON 테이블 TO 사용자
- REVOKE - 사용 권한 취소 (리온프)
- REVOKE 권한 ON 테이블 FROM 사용자
728x90
LIST
'정보처리기사 > 07. SQL 응용' 카테고리의 다른 글
| Chapter 04. 데이터 조작 프로시저 최적화 (0) | 2021.09.26 |
|---|---|
| Chapter 03. 절차형 SQL 활용하기 (0) | 2021.09.26 |
| Chapter 02. 응용 SQL 작성하기 (0) | 2021.09.26 |
댓글