-
[SQLD] SQL 개발자 공부하기 Day 4 : 관계형 데이터베이스 / SQLStudy/SQL 2024. 2. 19. 23:19728x90반응형
목차
1. 관계형 데이터베이스
관계형 데이터베이스 Relation Database
‣ 관계형 데이터베이스는 1970년 E.F. Codd 박사의 논문에서 처음 소개된 데이터베이스로, 릴레이션과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다.
데이터베이스의 종류
‣ 데이터베이스는 데이터를 어떠한 형태의 자료구조로 사용하느냐에 따라서 나누어진다.
‣ 계층형, 네트워크형, 관계형 데이터베이스 등이 있다.
계층형 데이터베이스
‣ 트리(Tree) 형태의 자료구조에 데이터를 저장하고 관리한다.
‣ 1대N 관계를 표현한다.
네트워크형 데이터베이스
‣ 오너(Owner)와 멤버(Member) 형태로 데이터를 저장한다.
‣ 1대N과 함께 M대N 표현도 가능하다.
관계형 데이터베이스
‣ 릴레이션에 데이터를 저장하고 관리한다.
‣ 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있다.
관계형 데이터베이스 집합 연산과 관계 연산
집합 연산
‣ 합집합(Union) - 두 개의 릴레이션을 하나로 합하는 것이다. 중복된 행(튜플)은 한 번만 조회된다.
‣ 차집합(Difference) - 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회한다.
‣ 교집합(Intersection) - 두 개의 릴레이션 간에 공통된 것을 조회한다.
‣ 곱집합(Cartesian product) - 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산한다.
관계 연산
‣ 선택 연산(Selection) - 릴레이션에서 조건에 맞는 행(튜플)만을 조회한다.
‣ 투영 연산(Projection) - 릴레이션에서 조건에 맞는 속성만을 조회한다.
‣ 결합 연산(Join) - 여러 릴레이션의 공통된 속성을 사용해서 새로운 릴레이션을 만들어 낸다.
‣ 나누기 연산(Division) - 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산이다.
반응형테이블Table의 구조
‣ 관계형 데이터베이스는 릴레이션에 데이터를 저장하고 릴레이션을 사용해서 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할 수 있다.
‣ 릴레이션은 최종적으로 데이터베이스 관리 시스템에서 테이블(Table)로 만들어진다.
‣ 기본 키(Primary key)는 하나의 테이블에서 유일성과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것이다.
ex) EMP 테이블에서는 사원번호가 기본키가 된다.
‣ 테이블은 행과 칼럼으로 구성된다. 그중에서 행(Row)은 하나의 테이블에 저장되는 값으로 튜플(Tuple)이라고도 한다.
‣ 칼럼(Column)은 어떤 데이터를 저장하기 위한 필드(Field)로 속성이라고도 한다.
‣ 외래 키(Foreign key)는 다른 테이블의 기본 키를 참조(조인)하는 칼럼이다.
ex) EMP 테이블의 부서코드는 DEPT 테이블의 기본 키인 부서코드를 참조한다.
‣ 외래 키는 관계 연산 중에서 결합 연산(Join)을 하기 위해서 사용한다.
데이터베이스 관리 시스템 Database Management System
‣ 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어
‣ DBMS의 종류에는 Oracle, MS-SQL, MySQL, Sybase 등이 있으며 모두 관계형 데이터베이스를 지원한다.
2. SQL
SQL Structured Query Language
‣ 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차형 + 비절차형 언어이다.
‣ 관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용하여 데이터베이스를 누구나 쉽게 사용할 수 있도록 한다.
‣ SQL은 ANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있다.
728x90SQL 종류
‣ DDL(Data Definition Language) - 관계형 데이터베이스의 구조를 정의하는 언어이다. (테이블을 생성, 변경, 삭제)
Create, Alter, Drop, Rename, Truncate문이 있다.
‣ DML(Data Manipulation Language) - 테이블에서 데이터를 입력, 수정, 삭제, 조회한다. (데이터를 입력, 수정, 삭제, 조회)
Insert, Update, Delete, Select문이 있다.
‣ DCL(Data Control Language) - 데이터베이스 사용자에게 권한을 부여하거나 회수한다. (권한 부여)
Grant, Revoke문이 있다.
‣ TCL(Transaction Control Language) - 트랜잭션을 제어하는 명령어이다.
Commit, Rollback, Savepoint문이 있다.
‣ 작업의 순서를 보면 데이터베이스의 사용자에게 권한을 부여하고 권한이 부여되면 DDL로 데이터 구조를 정의한다.
‣ 데이터 구조가 정의되면 데이터를 입력한 후에 개발자 및 사용자가 그 데이터를 조회하는 것이다.
(DCL -> DDL -> DML)SQL문의 실행 순서
1. 파싱(Parsing) - SQL문의 문법을 확인하고 구문 분석한다.
2. 실행(Execution) - 옵티마이저(Optimizer)가 수립한 실행 계획에 따라 SQL을 실행한다.
3. 인출(Fetch) - 데이터를 읽어서 전송한다.
트랜잭션 Transaction
‣ 데이터베이스의 작업을 처리하는 단위
트랜잭션의 특성
‣ 원자성 - 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다.
‣ 일관성 - 트랜잭션 실행 후에도 일관성이 유지되어야 한다.
‣ 고립성 - 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.
‣ 영속성 - 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 한다.
728x90반응형'Study > SQL' 카테고리의 다른 글
[SQLD] SQL 개발자 공부하기 Day 6 : GROUP BY / HAVING / 형변환 / 내장형 함수 (0) 2024.02.21 [SQLD] SQL 개발자 공부하기 Day 5 : SELECT / WHERE / NULL (0) 2024.02.20 [SQLD] SQL 개발자 공부하기 Day 3 : 데이터 모델링의 이해 오답 노트 (0) 2024.02.18 [SQLD] SQL 개발자 공부하기 Day 2 : 정규화 / 반정규화 / 관계 (1) 2024.02.17 [SQLD] SQL 개발자 공부하기 Day 1 : 데이터 모델링 / ERD / 엔터티 / 속성 (1) 2024.02.16