[SQLD] SECTION 3.  SQL 기본
Programming/SQL

[SQLD] SECTION 3. SQL 기본

[SQLD] SECTION 1. 데이터 모델링

[SQLD] SECTION 2. 데이터 모델과 성능

[SQLD] SECTION 3. SQL 기본

 

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) - 데이터를 읽어서 전송한다.