과목 Ⅱ. 데이터모델링의 이해
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) : 데이터를 읽어서 전송
'언어 > SQL' 카테고리의 다른 글
[기본] SQLD 2과목 1장 공부 정리 3 (테이블명 변경, 칼럼 추가/삭제/변경, 테이블 삭제, 뷰 생성/조회/삭제) (0) | 2020.09.02 |
---|---|
[기본] SQLD 2과목 1장 공부 정리 2 (DDL문에서 create table, constraint 설정, on delete cascade 옵션) (0) | 2020.09.01 |
[기초] 사용자 추가, MySQL DB 생성, 사용자 권한 부여 (0) | 2020.09.01 |
[기본] SQLD 1과목 2장 공부 정리 (정규화, 반정규화, 분산 DB) (0) | 2020.09.01 |
[기본] SQLD 1과목 1장 공부 정리 (데이터모델링, 3층스키마, 엔터티, 속성, 관계, 식별자) (0) | 2020.08.31 |