DBMS는 데이터베이스(Database)를 생성, 관리 및 조작하기 위해 사용하는 소프트웨어 시스템이다. 데이터를 효율적으로 저장하고, 검색하며, 관리할 수 있도록 도와준다.

데이터 정의 (DDL: Data Definition Language)
CREATE, ALTER, DROP.CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
데이터 조작 (DML: Data Manipulation Language)
INSERT, UPDATE, DELETE, SELECT. INSERT INTO users (id, name, email) VALUES (1, 'John Doe', 'john@example.com');
SELECT * FROM users;
데이터 제어 (DCL: Data Control Language)
GRANT, REVOKE.GRANT SELECT ON users TO 'user1';
REVOKE SELECT ON users FROM 'user1';
트랜잭션 관리 (TCL: Transaction Control Language)
COMMIT, ROLLBACK, SAVEPOINT.BEGIN TRANSACTION;
UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
COMMIT;
데이터 무결성 (Data Integrity)
데이터 정규화 (Normalization)
데이터를 중복 없이 체계적으로 저장하기 위해 테이블을 분해하는 과정.
장점: 데이터 일관성, 저장 공간 절약.
단계: 1NF → 2NF → 3NF 등. 주로 제 3정규화까지만 진행함.
예시:
| ID | 이름 | 주문 내역 |
|---|---|---|
| 1 | John | 상품A, 상품B |
사용자 테이블:
| ID | 이름 |
|---|---|
| 1 | John |
주문 테이블:
| 주문 ID | 사용자 ID | 상품명 |
|---|---|---|
| 1 | 1 | 상품A |
| 2 | 1 | 상품B |
트랜잭션 (Transaction)
데이터베이스 인덱스 (Index)
CREATE INDEX idx_user_name ON users(name);
관계형 DBMS (RDBMS)
NoSQL DBMS
SQL 인젝션 방지
String query = "SELECT * FROM users WHERE username = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, username);
트랜잭션 관리
connection.setAutoCommit(false);
try {
// 데이터 조작
connection.commit();
} catch (Exception e) {
connection.rollback();
}
정규화와 성능 고려