본문 바로가기

언어/SQL

[기본] SQLD 2과목 1장 공부 정리 1 (관계형 DB의 정의, SQL문의 종류, 트랜잭션의 특성)

과목 Ⅱ. 데이터모델링의 이해

 

1장 SQL 기본

 

1절 관계형 데이터베이스 (Relation DB)

 

1. 관계형 DB

    : 현재 기업에서 가장 많이 사용하는 DB

      Oracle, MS-SQL, MySQL, Sybase 등의 DBMS가 모두 관계형 DB를 지원한다.

     (DBMS : DataBase Management System, 데이터베이스 관리 시스템)

 

- DB와 DBMS의 차이

  • DB는 데이터를 어떠한 형태의 자료구조로 사용하느냐에 따라 달라짐

    - 계층형 DB : 트리형태의 자료구조에 데이터를 저장하고 관리 (1:N 관계 표현)

    - 네트워크형 DB : 오너와 멤버 형태로 데이터를 저장하고 관리 (1:N, M:N 표현)

    - 관계형 DB : 릴레이션에 데이터를 저장하고 관리

 

  • DBMS는 DB를 관리하기 위한 소프트웨어

- 관계형 DB의 집합연산과 관계연산

집합연산 설명
합집합(Union) - 두 개의 릴레이션을 하나로 합
- 중복된 행은 한 번만 조회
차집합(Difference) 지정 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것만 조회
교집합(Intersection) 두 릴레이션 간 공통된 것 조회
곱집합(Cartesian product) 각 릴레이션의 모든 데이터를 조합해 연산

관계연산 설명
선택연산(Selection) 릴레이션에서 조건에 맞는 행 조회
투영연산(Projection) 릴레이션에서 조건에 맞는 속성만 조회
결합연산(Join) 여러 릴레이션의 공통된 속성을 사용해 새로운 릴레이션 만듦
나누기연산(Division) 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지고 있는 행을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산

2. 테이블 구조

각 테이블에는 기본키가 존재하고, 행(Row)과 열(Column)로 구성된다. (행 = 튜플 & 칼럼 = 속성)

 

외래키는 다른 테이블의 기본키를 참조하는 칼럼이다.

 

위 그림에서 EMP 테이블의 부서코드 칼럼을 DEPT 테이블에서 기본키로 사용하고 있음을 볼 수 있다.

 

이것을 '참조한다'고 표현하고 이 때 EMP테이블에서 부서코드 칼럼처럼 다른 테이블의 기본키로 참조하고 있는 칼럼을

'외래키'라고 한다.

 

그리고 이 외래키는 조인을 위해서 사용한다.


2절 SQL 종류

 

1. SQL (Structured Query Language)

  : SQL은 DB에 대해 데이터 구조를 정의, 조작, 제어할 수 있도록 하는 절차형 언어이다.

 

2. SQL문의 종류

  • DDL (Data Definition Language) : 관계형 DB 구조를 정의하는 언어 -- ex) Create, Alter, Drop, Rename문
  • DML (Data Manipulation Language) : 데이터 입력, 수정, 삭제, 조회하는 문 -- ex) Insert, Update, Delete, Select문
  • DCL (Data Control Language) : DB 사용자에게 권한을 부여하는 문 -- ex) Grant, Revoke문
  • TCL (Transaction Control Language) : 트랜잭션을 제어하는 명령어 -- ex) Commit, Rollback, Savepoint문

DDL로 데이터 구조를 만들고 DML로 데이터를 입력(수정, 삭제, 조회)하고, DCL로 접근권한을 관리함.

작업을 할 때 DCL로 권한 부여 -> DDL로 구조 정의 -> DML로 입력 순으로 한다고 볼 수 있음

 

※ 네 가지 SQL문 종류는 구분하기 어렵지 않으므로 꼭 숙지해야 함! (주관식, 객관식 모두 잘 나옴)

 

※ 트랜잭션(Transaction) : DB의 작업을 처리하는 단위

 

<트랜잭션의 특성>

트랜잭션 특성 설명
원자성(Atomicity) - 트랜잭션은 DB연산의 전부가 실행되거나 전혀 실행되지 않아야 함 (ALL OR NOTHING)
- 즉, 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 실행되지 않은 상태와 같아야 함.
일관성(Consistency) - 트랜잭션은 실행 후에도 DB의 일관성이 유지되어야 함
고립성(Isolation) - 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.
(= 트랜잭션 실행 중 생성하는 중간결과는 다른 트랜잭션이 접근할 수 없음)
영속성(Durability) - 트랜잭션이 그 실행을 완료하면 그 결과는 영구적으로 보장됨

 

- SQL문의 실행 순서 (P-E-F)

  : 파싱(Parsing) - 실행(Execution) - 인출(Fetch)

  • 파싱(Parsing) : SQL 문법 확인, 구문 분석
  • 실행(Execution) : 옵티마이저가 수립한 실행계획에 따라 SQL 실행
  • 인출(Fetch) : 데이터를 읽어서 전송