- 데이터베이스를 생성, 관리, 운영할 수 있도록 돕는 소프트웨어
- 기존 파일 시스템의 문제점(중복성, 종속성) 을 해결하기 위해 개발됨
- 대표적인 DBMS : MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MongoDB 등
| 기능 | 설명 |
|---|---|
| 데이터 정의(DDL: Data Definition Language) | 데이터의 구조 및 형식 정의 (테이블 생성, 변경 등) |
| 데이터 조작(DML: Data Manipulation Language) | 데이터의 삽입, 삭제, 수정, 조회 |
| 데이터 제어 (DCL: Data Control Language) | 보안, 무결성, 동시성 관리 |
| 트랜잭션 관리 (TCL: Transaction Control Language) | 데이터의 정확성 및 일관성 유지 |
| 세대 | 특징 | 대표적인 DBMS |
|---|---|---|
| 1세대 (계층형 DBMS) | 계층 구조 (트리 형태) | IMS, IDS |
| 2세대 (관계형 DBMS, RDBMS) | 테이블(표) 기반의 데이터 저장 | MySQL, PostgreSQL, Oracle, MS SQL |
| 3세대 (객체지향 DBMS, OODBMS) | 객체(Object) 기반 데이터 모델 | MongoDB, db4o |
데이터를 테이블 형식(표) 으로 저장하고, 각각의 테이블을 키(KEY) 로 연결하여 관리
⭐️ 학생 테이블
| 학번 | 이름 | 학과 |
|---|---|---|
| 251111 | 홍길동 | 컴퓨터공학 |
| 251112 | 김영희 | 경영학 |
⭐️ 과목 테이블
| 과목코드 | 과목명 | 담당교수 |
|---|---|---|
| CS101 | 데이터베이스 | 박교수 |
| MG102 | 마케팅 | 이교수 |
| SQL 분류 | 기능 | 주요 명령어 |
|---|---|---|
| DDL (데이터 정의 언어) | 테이블 및 구조 정의 | CREATE, ALTER, DROP |
| DML (데이터 조작 언어) | 데이터 삽입, 수정, 삭제, 조회 | SELECT, INSERT, UPDATE, DELETE |
| DCL (데이터 제어 언어) | 데이터 접근 권한 관리 | GRANT, REVOKE |
| TCL (트랜잭션 제어 언어) | 데이터 변경의 트랜잭션 처리 | COMMIT, ROLLBACK, SAVEPOINT |
📌 SQL 예제
-- 학생 테이블 생성 (DDL)
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
-- 학생 테이블 삽입 (DML)
INSERT INTO students (student_id, name, department)
VALUES (251111, '홍길동', '컴퓨터공학');
-- 학생 정보 조회 (DML)
SELECT * FROM students WHERE department = '컴퓨터공학';
-- 학생 정보 수정 (DML)
UPDATE students SET name = '김영희' WHERE student_id = 251111;
-- 학생 정보 삭제 (DML)
DELETE FROM students WHERE student_id = 251111;
- 데이터베이스에서 여러 작업을 하나의 단위로 묶어 처리하는 것
- ACID 특성을 만족해야 함
| 특성 | 설명 |
|---|---|
| Atomicity (원자성) | 트랜잭션의 모든 작업이 성공적으로 완료되거나, 전부 실패해야 함 |
| Consistency (일관성) | 트랜잭션이 완료되면 데이터의 정합성이 유지 되어야 함 |
| Isolation (고립성) | 트랜잭션 간의 작업이 서로 간섭하지 않아야 함 |
| Durability (지속성) | 트랜잭션이 성공적으로 완료되면 데이터가 영구적으로 저장되어야 함 |
📌 트랜잭션 SQL 예제
-- 트랜잭션 시작
BEGIN;
-- 데이터 삽입
INSERT INTO students (student_id, name, department)
VALUES (251113, '이순신', '해양학');
-- 오류 발생 시 롤백 (데이터 원래대로 되돌림)
ROLLBACK;
-- 변경 사항 확정 (데이터 저장)
COMMIT;
📌 Python 에서 MySQL 연결 예제
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test_db',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
💡 코드에서 DB와 연결하여 SQL 실행 가능
💡 쿼리를 사용하여 데이터 삽입, 삭제, 조회 가능
✅ DBMS 는 데이터베이스를 관리하는 시스템
✅ 파일 시스템보다 중복 제거, 보안성, 일관성 등의 장점이 있음
✅ 관계형 DBMS (RDBMS) 는 테이블을 활용하여 데이터 저장
✅ SQL을 사용하여 데이터를 정의(DDL), 조작(DML), 제어(DCL), 관리(TCL) 가능
✅ 트랜잭션은 ACID 원칙을 준수하여 데이터의 신뢰성을 보장
✅ DBMS 는 SQL 처리 엔진 + 스토리지 엔진으로 구성됨
✅ Python, Java 등 프로그래밍 언어에서 DBMS 연동 가능