· 데이터 베이스
-> 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장한 것
· 관계형 데이터 베이스
-> 릴레이션 (Relation)과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합 등 생성이 가능
-> 현재 기업에서 가장 많이 사용됨
· 관계형 데이터 베이스의 등장
-> 1970년대 E.F Codd 박사 논문에서 처음 소개된 데이터 베이스
· 데이터 베이스의 종류
-> 데이터를 어떤 형태의 자료구조 (Data Structure)로 사용하는가에 따라서 구분
1) 계층형 데이터 베이스 (1:N 관계 표현)
- 트리 (Tree) 형태의 자료구조에 데이터를 저장하고 관리
2) 네트워크 데이터 베이스 (1:N, M:N 관계 표현)
- 오너 (Owner) 와 멤버 (Member) 형태로 데이터 저장
3) 관계형 데이터 베이스
- 릴레이션에 데이터를 저장하고 관리
- 릴레이션을 사용하여 집합/관계 연산이 가능
· 데이터 베이스 관리 시스템 (Database Management System)
-> 계층형/네트워크/관계형 데이터 베이스를 관리하기 위한 소프트웨어
-> DBMS의 종류는 Oracle, MS-SQL, MySQL, Sybase 등이 있으며 모두 관계형 데이터 베이스를 지원함
· 관계형 데이터 베이스 집합 연산과 관계 연산
-> 릴레이션을 사용하여 집합 연산과 관계 연산이 가능
[집합 연산]
1) 합집합 (Union) : 두 개의 릴레이션을 하나로 합하는 것으로 중복 행(튜플)은 한 번만 조회
2) 차집합 (Difference) : 본래 릴레이션에는 존재하지만 다른 릴레이션에는 존재하지 않는 것을 조회
3) 교집합 (Intersection) : 두 개의 릴레이션 간 공통된 것을 조회
4) 곱집합 (Cartesian product) : 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산
[관계 연산]
1) 선택 연산 (Selection) : 릴레이션에서 조건에 맞는 행(튜플)만 조회
2) 투영 연산 (Projection) : 릴레이션에서 조건에 맞는 속성만 조회
3) 결합 연산 (Join) : 여러 릴레이션의 공통된 속성으로 새 릴레이션 생성
4) 나누기 연산 (Division) : 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산
· 테이블의 구조
-> 관계형 데이터 베이스는 릴레이션에 데이터를 저장하고 사용해서
집합/관계 연산을 지원하여 다양한 형태로 데이터를 조회하며 릴레이션은
최종적으로 DBMS에서 테이블(Table)로 생성
1) 기본키 (Primary Key) : 하나의 테이블에서 유일성과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것
2) 행/튜플 (ROW/Tuple) : 하나의 테이블에 저장되는 값
3) 칼럼/속성 (Column/Attribute) : 데이터를 저장하기 위한 필드
4) 외래키 (Foreign key) : 다른 테이블의 기본키를 조인(참조)하는 칼럼 관계 연산 중에서 결합 연산(Join)을 위해 사용함
· SQL (Structured Query Language)
-> 관계형 데이터 베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형+비절차형 언어로 SQL문을 사용해
데이터 베이스를 누구나 쉽게 사용할 수 있도록 함
· SQL 표준 : ANSI/ISO 표준을 준수하여 DMBS가 변경되어도 사용가능
1) ANSI/ISO SQL 표준
- INNER JOIN, NATURAL JOIN, USING 조건, ON 조건절
2) ANSI/ISO SQL3 표준
- DBMS 벤더별로 차이가 있었던 SQL을 표준화하여 제정
· SQL의 종류
-> SQL은 데이터 정의/조작/제어 등의 기능을 지원
1) DDL (정의어) : 관계형 데이터 베이스의 구조를 정의하는 언어
- CREATE, ALTER, DROP, RENAME, TRUNCATE
2) DML (조작어) : 테이블에서 데이터 입력/수정/삭제/조회하는 언어
- INSERT, UPDATE, DELETE, SELECT
3) DCL (제어어) : 데이터 베이스 사용자에게 권한을 부여하거나 회수
- GRANT, REVOKE
4) TCL(트랜잭션 제어어) : 트랜잭션을 제어하는 명령어
- COMMIT, ROLLBACK, SAVEPOINT
· 트랜잭션 (Transaction)
-> 데이터 베이스의 작업을 처리하는 단위
· 트랜잭션의 특징
1) 원자성 (Atomicity)
- 트랜잭션은 데이터 베이스의 연산 전부가 실행되거나 그렇지 않거나
(ALL OR NOTHING) 즉, 트랜잭션 처리가 완전히 끝나지 않은
경우 실행 전의 상태와 동일해야함
2) 일관성 (Consistency)
- 트랜잭션 실행 결과로 데이터 베이스의 상태가 모순되지 않아야 함
- 트랜잭션 실행 후에도 일관성이 유지되어야 함
3) 고립성 (Isolation)
- 트랜잭션이 실행 중 생성하는 연산 중간결과는 타 트랜잭션 접근 불가
즉, 부분적 실행 결과를 다른 트랜잭션이 볼 수 없음
4) 영속성 (Durability)
- 트랜잭션이 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 될 것
· SQL문의 실행 순서 (파-실-인)
1) 파싱 (Parsing) : SQL문의 문법 확인 후 구문 분석
구문 분석한 SQL문은 Library Cache에 저장
2) 실행 (Execution) : 옵티마이저가 수립한 계획에 따라 SQL 실행
3) 인출 (Fetch) : 데이터를 읽어서 전송
'📊DataBase > 📈SQL' 카테고리의 다른 글
[🪪SQLD] 2과목 - SQL 기본 : GROUP BY, HAVING 절 (24년 개정 요약) (0) | 2024.02.22 |
---|---|
[🪪SQLD] 2과목 - SQL 기본 : SELECT문/WHERE절 (24년 개정 요약) (0) | 2024.02.22 |
[🪪SQLD] 1과목 - 데이터 모델링의 이해 : 관계와 조인 / 트랜잭션 / Null 속 (24년 개정 요약) (0) | 2024.02.14 |
[🪪SQLD] 1과목 - 데이터 모델링의 이해 : 정규화와 반정규화 (24년 개정 요약) (1) | 2024.02.13 |
[🪪SQLD] 1과목 - 데이터 모델링의 이해 : 식별자 / 본질 식별자 vs 인조 식별자 (24년 개정 요약) (1) | 2024.02.13 |