1. 관계형 데이터베이스(Relation Database)
(1) 관계형 데이터베이스의 등장
-
1970년대 E.F. Codd박사 논문에서 처음 소개
-
릴레이션과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있음
-
현재 기업에서 가장 많이 사용함
-
Oracle, MS-SQL, MySQL, Sybase 등의 관리 시스템 있음
(2) 데이터베이스와 데이터베이스 관리 시스템의 차이점
-
데이터베이스는 데이터를 어떤 형태의 자료구조로 사용하느냐에 따라서 나누어짐
-
계층형 데이터베이스는 트리(Tree)형태의 자료구조에 데이터를 저장하고 관리
-
네트워크는 오너와 멤버 형태로 데이터를 저장함
-
계층형 데이터베이스는 1대N관계를 표현함
-
네트워크 데이터베이스는 1대N과 N대N으로 표현 가능함
-
관계형 데이터베이스는 릴레이션에 데이터를 저장하고 관리함
-
관계형 데이터베이스는 릴레이션을 집합 연산과 관계 연산을 할 수 있음
-
데이터베이스 관리 시스템은 계층형 데이터베이스, 네트워크 데이터베이스, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어 의미 하며, DBMS라고도 함
-
DBMS의 종류에는 Oracle, MS-SQL, MySQL, Sybase 등이 있음
(3) 관계형 데이터베이스 집합 연산과 관계 연산
- 관계형 데이터베이스의 특징은 릴레이션을 사용해 집합 연산과 관계 연산을 할 수 있음
*집합 연산
-
합집합(Union): 두 개의 릴레이션을 하나로 합함, 중복된 행(튜플)은 한 번만 조회 됨
-
차집합(Difference): 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회 함
-
교집합(Intersection): 두 개의 릴레이션 간에 공통된 것을 조회함
-
곱집합(Cartesian product): 각 릴레이션에 존재하는 모든 데이터를 조합해 연산함
*관계 연산
-
선택 연산(Selection): 릴레이션에서 조건에 맞는 행(튜플)만을 조회함
-
투영 연산(Projection): 릴레이션에서 조건에 맞는 속성만을 조회함
-
결합 연산(Join): 여러 릴레이션의 공통된 속성을 사용해 새로운 릴레이션을 만들어냄
-
나누기 연산(Division): 기준 릴레이션에서 나누는 리레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산
2. 테이블의 구조
-
관계형 데이터베이스는 릴레이션에 데이터를 저장하고 릴레이션을 사용해 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할 수 있음
-
릴레이션은 데이터베이스 관리 시스템에서 테이블로 만들어짐
-
기본키는 하나의 테이블에서 유일성과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것
-
테이블은 행과 칼럼으로 구성됨
-
행은 하나의 테이블에 저장되는 값으로 튜플(Tuple) 이라고도 함
-
칼럼은 어떤 데이터를 저장하기 위한 필드로 속성(Attribute)이라고도 함
-
외래키는 다른 테이블의 기본키를 참조(조인)하는 칼럼
-
외래키는 관계 연산 중에서 결합 연산(조인)을 하기 위해서 사용
1. SQL(Structured Query Language)
-SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 조작, 제어 등을 할 수 있는 절차형 언어
-관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용해 데이터베이스를 누구나 쉽게 사용할 수 있도록 함
-SQL은 ANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있음
*SQL 표준
-ANSI/ISO SQL 표준: INNER JOIN, NATURAL JOIN, USING 조건, ON 조건절을 사용함
-ANSI/ISO SQL3 표준: DBMS 벤더별로 차이가 있었던, SQL을 표준화 해 제정함
2. SQL 종류
(1) SQL의 종류
* DDL(Data Definition Language)
-
관계형 데이터베이스의 구조를 정의하는 언어
-
테이블을 생성하거나 변경, 삭제함
-
CREATE, ALTER, DROP, RENAME
* DML(Data Manipulation Language)
-
테이블에서 데이터를 입력, 수정, 삭제, 조회함
-
INSERT, UPDATE, DELETE, SELECT
*DCL(Data Control Language)
-
데이터베이스 사용자에게 권한을 부여하거나 회수함
-
GRANT, REVOKE, TRUMCATE
*TCL(Transaction Control Language)
-
트랜잭션을 제어하는 명령어
-
COMMIT, ROLLBACK, SAVEPOINT
(2) 트랜잭션의 특성(트랜잭션: 데이터베이스의 작업을 처리하는 단위)
*원자성(Atomicity)
-
트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 함(ALL OR NOTHING)
-
트랜잭션의 처리가 완전히 끝나지 않았을 경우, 실행되지않은 상태와 같아야 함
*일관성(Consistency)
-
트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함
-
트랜잭션 실행 후에도 일관성이 유지 돼야 함
*고립성(Isolation)
-
트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없음
-
즉, 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없음
*영속성(Durability)
-
트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 함
3. SQL문의 실행 순서
-
개발자가 작성한 SQL문은 3단계를 걸쳐서 실행 됨
-
SQL문의 문법을 검사하고 구문분석을 함
-
구문분석 이후에 SQL을 실행함
-
SQL이 실행되면 데이터를 인출함
*파싱(Parsing)
-
SQL문의 문법을 확인하고 구문분석함
-
구문분석한 SQL문은 Library Cache에 저장함
*실행(Execution)
-
옵티마이저(Optimizer)가 수립한 실행 계획에 따라 SQL을 실행함
*인출(Fetch)
-
데이터를 읽어서 전송함
'SQL 공부' 카테고리의 다른 글
(SQLD)DDL(Data Definition Language) (0) | 2020.08.08 |
---|---|
(SQLD)DML(Data Manipulation Language) (0) | 2020.08.07 |
(SQLD)반정규화(De-Normalization)/분산 데이터베이스 (0) | 2020.08.06 |
(SQLD)정규화(Normalization)/정규화와 성능 (0) | 2020.08.04 |
(SQLD)관계(Relationship)/엔터티 식별자 (0) | 2020.08.02 |