[Database] 데이터베이스 내용 정리

우유·2026년 2월 6일

[Cloud] Database

목록 보기
26/28

데이터베이스 핵심 정리

(RDB → PostgreSQL → 이중화 → NoSQL → Redis/MongoDB)


1. RDB(Relational Database) 핵심 정리 (가장 중요)

관계형 데이터베이스(RDB)는 테이블 기반 + 스키마 고정 + 트랜잭션(ACID) 을 핵심으로 한다.


1-1. DDL (Data Definition Language)

데이터 구조를 정의하는 언어

  • CREATE : 테이블/뷰 생성
  • ALTER : 컬럼 추가·수정·삭제
  • DROP : 테이블 삭제
  • TRUNCATE : 테이블 데이터 전체 삭제

시험 포인트

  • DDL은 “데이터”가 아니라 구조를 다룬다.
  • MySQL에서는 DDL이 자동 커밋됨.

1-2. DML (Data Manipulation Language) : INSERT/UPDATE/DELETE

데이터를 조회·조작하는 언어

SELECT / WHERE

SELECT * FROM users WHERE age >= 20;

범위(BETWEEN) / 목록(IN) / 패턴 검색(LIKE)

WHERE price BETWEEN 10000 AND 50000;
WHERE category IN ('DEVICE','STORAGE');
WHERE name LIKE '%Cable%';

DISTINCT (중복 제거)

SELECT DISTINCT category
FROM products;

JOIN

SELECT *
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
  • INNER JOIN : 양쪽에 모두 존재하는 데이터만
  • LEFR JOIN : 왼쪽 테이블은 무조건 유지 (오른쪽 테이블의 데이터가 없어도 join)

집계 함수

  • COUNT(), SUM(), AVG(), MAX(), MIN()

HAVING

SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) >= 100000;

WHERE는 행 필터, HAVING은 그룹 결과 필터


1-3. TCL (Transaction Control Language)

트랜잭션 제어 언어

  • BEGIN / START TRANSACTION
  • COMMIT
  • ROLLBACK
  • SAVEPOINT : 부분 롤백

트랜잭션(Transaction)이란?

여러 SQL 문장을 하나의 논리적 작업 단위로 묶는 것.

트랜잭션은 여러 SQL을 하나의 ‘원자적 작업’으로 묶어, 성공이면 전부 반영, 실패면 전부 취소하게 해준다.

  • 전부 성공 → COMMIT
  • 하나라도 실패 → ROLLBACK

🔑 ACID 핵심 개념

요소의미
A (Atomicity)전부 실행되거나 전부 취소
C (Consistency)트랜잭션 전·후 데이터 무결성 유지 (FK,UNIQUE 등 규칙위반 불가)
I (Isolation)동시에 실행돼도 서로 간섭 없음 (for update 등)
D (Durability)COMMIT 후 데이터는 영구 보존

한 줄 암기
“트랜잭션은 전부 아니면 전무이며, 항상 일관되고, 서로 간섭하지 않고, 결과는 남는다.”


1-4. 인덱스(Index)

검색 속도 향상을 위한 자료구조

인덱스(Index)란
테이블의 특정 컬럼(또는 컬럼 조합)을 정렬된 구조(B-Tree 등)로 별도 저장해서

검색(WHERE), 정렬(ORDER BY), 조인(JOIN) 을 빠르게 만드는 자료구조다.

  • WHERE, JOIN, ORDER BY 성능 향상
  • EXPLAIN으로 “인덱스가 쓰였는지” 확인
  • 인덱스는 “읽기”를 빠르게 하지만 “쓰기”는 느리게 한다

주의

  • 쓰기 성능 저하
  • 저장 공간 증가

1-5. VIEW

실제 데이터를 저장하지 않는 가상 테이블

  • 뷰 생성
CREATE VIEW v_orders AS
SELECT customer_id, SUM(amount) total
FROM orders
GROUP BY customer_id;
  • 뷰 삭제
DROP VIEW v_orders;
  • 보안
  • 쿼리 단순화 목적

1-6. 서브쿼리(Subquery)

쿼리 안의 쿼리

WHERE 절 서브쿼리

SELECT *
FROM orders
WHERE customer_id IN (
  SELECT customer_id
  FROM customers
  WHERE region = 'seoul'
);

SELECT 절 서브쿼리 (스칼라 서브쿼리)

SELECT
  o.order_id,
  (
    SELECT SUM(quantity)
    FROM order_items oi
    WHERE oi.order_id = o.order_id
  ) AS total_qty
FROM orders o;

FROM 절 서브쿼리 (파생 테이블)

SELECT *
FROM (
  SELECT order_id, SUM(quantity) AS qty
  FROM order_items
  GROUP BY order_id
) t
WHERE t.qty >= 3;

1-7. 정규화(Normalization)

데이터 중복을 줄이고 무결성을 높이기 위한 설계 기법

핵심 목적

  • 데이터 중복 제거
  • 이상 현상(삽입/삭제/갱신 이상) 방지

시험용 한 줄 정리

  • 정규화란?
    👉 “중복을 제거하고 테이블을 역할별로 분리하는 과정”

(보통 3정규형(3NF) 까지만 언급되면 충분)


2. PostgreSQL 특징 (MySQL과 비교)

  • RDB 기반
  • JSON / JSONB 컬럼 지원
  • 데이터 타입과 제약 조건이 엄격
  • DDL 롤백 가능

👉 포인트:
“PostgreSQL은 RDB이지만 JSON 컬럼을 가질 수 있다.”

MySQL이 어울리는 경우

  • 빠른 개발
  • 단순 서비스
  • 운영 복잡도 낮음

PostgreSQL이 어울리는 경우

  • 장기 운영
  • 권한/보안 중요
  • 멀티테넌트
  • 운영 사고 최소화

3. 이중화의 필요성과 주요 개념

왜 필요한가?

  • 장애 대응
  • 서비스 연속성 확보
  • 부하 분산, 데이터 보호, 읽기 확장

핵심 개념

  • Primary / Secondary
  • Replication
  • Failover
  • High Availability(HA)

4. NoSQL 개념 정리

RDB vs NoSQL

구분RDBNoSQL
스키마고정유연
JOIN가능거의 없음
확장Scale-upScale-out

NoSQL 4가지 유형

  1. Key-Value : Redis
  2. Document : MongoDB
  3. Wide Column : Cassandra
  4. Graph : Neo4j

5. Redis & MongoDB

Redis

  • In-Memory
  • TTL 지원
  • 캐시 / 세션 / 랭킹

MongoDB

  • Document 기반
  • JSON(BSON)
  • 스키마 유연

📌 최종 요약

  • RDB는 데이터베이스의 핵심이며 DDL/DML/TCL/ACID/정규화를 반드시 이해해야 한다.
  • PostgreSQL은 RDB 기반이지만 JSON 컬럼을 지원한다.
  • 이중화는 장애 대응을 위한 필수 구조다.
  • NoSQL은 확장성과 유연성이 강점이며 Redis와 MongoDB는 역할이 다르다.
profile
Front-end Developer, Cloud Engineer

0개의 댓글