본문 바로가기
정보처리기사/07. SQL 응용

Chapter 01. 데이터베이스 기본

by HoPpangg 2021. 9. 26.
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)
      • 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법

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

댓글