1. 데이터베이스 (Database)
1) 데이터베이스
- 특정 기업이나 조직 또는 개인이 필요에 의해 (ex. 부가가치가 발생하는) 데이터를 일정한 형태로 저장해 놓은 것.
- 데이터베이스 관리 소프트웨어 : DBMS (Database Management System)
ex. Oracle, MS-SQL, MySQL, Sybase 등
- 관계형 데이터베이스
- 정규화를 통해 이상(ANOMALY) 현상을 제거하고 데이터 중복을 피할 수 있다.
- 동시성을 관리하고 병행 제어를 통해 데이터를 공유한다.
- 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있다.
- 집합 연산 : 합집합, 교집합, 차집합 등을 만들 수 있다.
- 관계 연산 : 선택 연산 (Selection), 투영 연산 (Projection), 결합 연산 (Join), 나누기 연산(Division)
- 테이블 (Table)
- 데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본 단위
- 행과 칼럼의 2차원 구조로 이루어져 있다.
2. SQL (Structured Query Language)
1) SQL
- SQL은 관계형 데이터베이스에 대해서 데이터 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 언어이다.
- SQL은 ANSI / ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있다.
2) 종류
종류 | 설명 |
DDL | - Data Definition Language, 데이터 정의어 - 관계형 데이터베이스의 구조를 정의하는 언어이다. - CREATE, ALTER, DROP, RENAME, TRUNCATE |
DML | - Data Manipulation Language, 데이터 조작어 - 테이블에서 데이터를 입력, 수정, 삭제, 조회한다. - INSERT, UPDATE, DELETE, SELECT |
DCL | - Data Control Language, 데이터 제어어 - 데이터베이스 사용자에게 권한을 부여하거나 회수한다. - GRANT, REVOKE |
TCL | - Transaction Control Language, 트랜잭션 제어어 - 트랜잭션을 제어하는 명령어이다. - COMMIT, ROLLBACK, SAVEPOINT |
- 트랜잭션의 특성
트랜잭션 특성 | 설명 |
원자성 (Atomicity) | - 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다. (ALL OR NOTING) - 즉, 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 실행되지 않은 상태와 같아야 한다. |
일관성 (Consistency) | - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 한다. - 트랜잭션 실행 후에도 일관성이 유지되어야 한다. |
고립성 (Isolation) | - 트랜잭션 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없다. - 즉, 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다. |
영속성 (Durability) | - 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 한다. |
3) SQL 문의 실행 순서
- 개발자가 작성한 SQL문 (DDL, DML, DCL 등)은 3단계에 걸쳐서 실행된다.
- SQL 실행 순서
SQL 실행 순서 | 설명 |
파싱 (Parsing) | - SQL문의 문법을 확인하고 구문분석한다. - 구문분석한 SQL문은 Library Cache에 저장한다. |
실행 (Execution) | - 옵티마이저 (Obtimizer)가 수립한 실행 계획에 따라 SQL을 실행한다. |
인출 (Fetch) | - 데이터를 읽어서 전송한다. |