Tiny Star

📊DataBase/📈SQL

[🪪SQLD] 2과목 - SQL 기본 : 관계형 데이터 베이스 (24년 개정 요약)

청크 2024. 2. 14. 14:50

· 데이터 베이스

 -> 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장한 것

 

· 관계형 데이터 베이스

 -> 릴레이션 (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) : 데이터를 읽어서 전송