방송통신대학교 데이터베이스 시스템 강의 정리 자료입니다.
1. 데이터베이스 언어의 이해
데이터베이스 사용의 의미
: 파일 처리 시스템의 경우 애플리케이션과 파일이 직접 연결되어 있는 구조였기에 명확한 한계가 존재했었음. 이를 해결하기 위해 등장 한 것이 중간에서 데이터를 처리해주는 DBMS임. 데이터의 사용과 관리가 분리됨에 따라 이를 연결해줄 인터페이스가 필요하게 되었고 이에 따라 데이터베이스 언어가 등장하게 되었으며, 가장 대표적인 것이 SQL임.
SQL(Structured Query Language)의 개념
: 관계 대수에 기초해 RDMBS의 데이터 관리를 위해 1970년대 초 IBM에서 설계한 언어임. 1986년 ANSI로, 1987년 ISO에서 표준으로 제정되어 국제 표준이 되었으며, 상용 DBMS의 특성에 맞게 국제표준을 확장한 독자전 버전이 존재함. 최근 많이 사용되는 NoSQL(SQL만을 사용하지 않는 DBMS)에서도 SQL을 그대로 사용하는 경우가 많음.
SQL의 특징
: 비절차적(선언형: 프로그램이 어떤 방법으로 해야하는지를 나타내기보다 '무엇을'에 집중하는 언어로 편리하게 데이터 저장, 수정, 삭제할 수 있음.) 언어로 필요한 데이터만 기술하며, 인간의 언어와 매우 유사하고 간단, 명료함.
SQL의 구성
- 데이터 정의 언어(DDL: Data Definition Language)
: 데이터베이스 내의 객체를 생성 및 삭제하고 그 구조를 조작하는 명령어의 집합으로 데이터가 준수해야하는 제약조건을 기술함.
- 데이터 조작 언어(DML: Data Manipulation Language)
: DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합으로 데이터에 대한 CRUD(Create, Read, Update, Delete)명령을 포함함.
- 데이터 제어 언어(DCL: Data Control Language)
: DBMS의 동작, 접근 권한 등을 관리하는 SQL 명령어의 집합
2. 데이터 정의 언어
데이터 정의 언어의 개념
: 데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
데이터베이스 객체의 종류
: 데이터 저장(스키마[데이터베이스], 테이블, 뷰) / 데이터 조작(트리거, 프로시저, 함수 등)
데이터 정의 명령어의 종류
: CREATE(객체 생성), ALTER(객체 수정), DROP(객체 삭제)
데이터 정의 언어의 구문 형식
스키마 정의
: 테이블은 데이터베이스 도는 스키마를 먼저 생성해야 만들 수 있으며, 스키마(schema) = 데이터베이스(database)로 볼 수 있음. 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스, 뷰 등의 데이터베이스 객체의 집합을 의미함.
릴레이션과 테이블
: 데이터베이스를 만든 뒤에 데이터를 저장할 수 있는 릴레이션을 생성하게 되며, 보통 릴레이션이라는 용어보다는 테이블이라는 용어를 자주 사용함. 릴레이션과 테이블은 RDBMS의 기본적 데이터 저장 구조로 2차원 형태의 저장 구조인 점에서 유사하나 릴레이션은 데이터를 구상하는 추상적인 개념(집합론에 기반한 여러 속성을 갖는 레코드의 집합으로 이론적 개념임. 레코드의 순서가 없으며 중복된 레코드가 존재하지 않음.)이고, 테이블은 물리적으로 데이터를 저장하는 구체적인 개념(레코드의 순서가 존재 가능하고 키 제약에 따라 중복된 레코드가 존재 가능함.)이라는 차이가 있음.
테이블 정의 방법 및 예시
데이터 타입의 개념
: 컬럼이 가질 수 있는 값의 범위, 즉 도메인(영역 제약 조건)을 결정함. 프로그래밍 언어에서의 변수 생성 시 사용하는 데이터 타입의 사용목적과 방법이 매우 유사함.
정수 데이터 타입
- TINYINT
: 1byte 정수(-128~127) 데이터 타입으로 크기가 작은 정수를 저장할 때 사용함.
- SMALLINT
: 2byte 정수(-32768~32767) 데이터 타입으로 중간 크기의 정수를 저장할 때 사용함.
- INT
: 4byte 정수(약 -20억~20억) 데이터 타입으로 일반 크기의 정수를 저장할 때 사용함.
- BIGINT
: 8btye 정수(-약 9000경~9000경) 데이터 타입으로 매우 큰 크기의 정수를 저장할 때 사용함.
실수 데이터 타입
- 부동 소수형
FLOAT: 4byte 크기의 부동 소수
FLOAT(P): 소수점 이하 P개 자리의 부동소수
DOUBLE: 8byte 크기의 부동 소수
- 고정 소수형
DECIMAL(M, N): 전체 M자리, 소수점 이하 N자리의 소수를 저장(예시: DECIMAL(5, 2)는 -999.99~999.99범위의 숫자를 가질 수 있음.)
NUMERIC: DECIMAL과 유사함.
날짜 및 시간 데이터 타입
DATE: 'YYYY-MM-DD' 형식의 시간으로 표현 방식은 변경이 가능함.
YEAR: 'YYYY'형식의 연도
TIME: 'HH:MI:SS'형식의 시간
DATETIME: 'YYYY-MM-DD HH:MI:SS' 형식의 날짜 및 시간
TIMESTAMP: DATETIME과 유사하나 DATETIME형식이 9999년 12월 31일까지의 굉장히 넒은 범위의 시간을 저장할 수 있는 반면 TIMESTAMP는 유닉스 기반 시간을 기반으로 하기에 1970~2038년까지 표현이 가능하고, DBMS 서버의 시간대에 따라 시간이 변경된다는 특징이 있기에 서버 시간을 반드시 고려하여 작업해야함.
문자 데이터 타입
CHAR(N): 최대 길이가 N인 고정길이 문자열
VARCHAR(N): 최대 길이가 N인 가변길이 문자열
언뜻보면 VARCHAR를 쓰는게 CHAR 쓰는 것보다 무조건 좋을 것 같지만 만약 기존의 값을 더 큰 값으로 갱신할 경우 컴퓨터에서는 해당 부분을 처리하기 위해 바이트를 뒤로 밀어내야 하기 때문에 VARCHAR보다 CHAR를 쓰는게 좋을 수도 있음.
TEXT: 길이가 최대 2~4GB인 가변길이 문자열
CLOB: Character Large Object의 줄임말로 수백 MB~수 GB의 데이터 저장을 위한 타입으로 레코드 단위가 아닌 별도의 저장 공간(링크)을 부여하는 외부 저장 방식
ENUM: 유한개의 문자열 집합 중 하나의 값을 선택하는 것으로 효율적인 저장 및 처리를 위해 내부적으로 숫자로 저장
제약 조건
: 테이블에 존재하는 데이터를 무결하고 세밀하게 관리하기 위해 사용되는 방법으로 DBMS가 제약조건을 모니터링(레코드의 입력, 수정, 삭제 요청 시 정의된 제약조건을 준수하는지 여부를 검사한 후 실행하기에 데이터의 일관성과 무결성 훼손을 방지함.)함. DBMS는 적용하려는 제약의 유형에 따라 다양한 제약 조건을 지원함.
제약 조건의 종류
PRIMART KEY: 기본키를 지정하는 제약조건으로 UNIQUE와 NOT NULL 특성을 가짐.
FOREIGN KEY: 외래키를 지정하는 제약조건으로 참조 컬럼을 정의함.
NOT NULL: NULL이 될 수 없는 컬럼을 지정하는 제약조건으로 값을 반드시 입력하게 함.
UNIQUE: 동일한 컬럼값을 가질 수 없음을 지정하는 제약조건
AUTO_INCREMENT: 레코드가 추가될 때 자동적으로 속성값이 1부터 1씩 증가되어 입력되게 하는 제약조건
CHECK: 컬럼값이 특정 조건을 준수하는지 여부를 지정하는 제약조건(예시: 0이하인 값만 받게 지정 가능)
사용 예시
테이블 수정
: CREATE문에 의해 생성된 테이블에 컬럼을 추가, 수정(이름, 데이터 타입, 제약조건) 또는 삭제하는 것으로 컬럼 삭제 또는 컬럼의 데이터 타입 수정 시 데이터에 대한 소실(복구가 어려움)이 발생하므로 많은 주의가 요구됨.
테이블 삭제
: 존재하는 테이블을 스키마(또는 데이터베이스)에서 삭제하는 역할을 하며, 삭제된 테이블에 저장된 모든 데이터가 소실, 복구가 불가능한 연산이므로 각별한 주의가 필요함. 만약 삭제하려는 테이블의 특정 컬럼이 다른 테이블에 FK로 사용되고 있는 경우 미리 참조를 해지하고 삭제하거나 참조되는 컬럼의 값을 모두 NULL로 바꾼 후 테이블을 삭제해야함.
'방송통신대학교 > 3학년 1학기' 카테고리의 다른 글
운영체제] 2강. 프로세스와 쓰레드 (0) | 2025.03.13 |
---|---|
[운영체제] 1강. 운영체제 소개 (0) | 2025.03.13 |
[데이터베이스 시스템] 3강. 관계형 모델 (0) | 2025.03.12 |
[데이터베이스 시스템] 2강. 데이터베이스 모델링 (0) | 2025.03.11 |
[데이터베이스 시스템] 1강. 데이터베이스의 이해 (0) | 2025.03.11 |
댓글