데이터베이스 기초
SQL을 처음 배우면서 정리한 내용이다. SQLD 준비하면서 개념부터 다시 잡았다.
데이터베이스란
데이터베이스는 통합된 정보의 집합이다. 단순히 데이터를 모아두는 게 아니라, 데이터끼리 논리적으로 연관시키고 구조화함으로써 중복을 없애고 검색·갱신을 효율적으로 처리하도록 관리한다.
DBMS (DataBase Management System)
데이터는 방대한 양이 쌓이기 때문에 사람이 직접 관리하는 건 불가능하다. 그래서 효율적으로 저장·관리·검색할 수 있는 소프트웨어를 쓰는데, 이게 DBMS다.
대표적인 DBMS:
| DBMS | 특징 |
|---|---|
| Oracle | 기업용, 강력한 기능, 라이선스 비용 높음 |
| MySQL | 오픈소스, 웹 서비스에서 많이 사용 |
| PostgreSQL | 오픈소스, 표준 SQL 준수, 기능이 풍부 |
| MSSQL | 마이크로소프트, Windows 환경 |
| SQLite | 임베디드, 파일 기반, 가벼움 |
SQL (Structured Query Language)
데이터베이스를 조작하기 위한 언어다. 크게 4가지로 분류된다:
| 분류 | 명령어 | 설명 |
|---|---|---|
| DDL | CREATE, ALTER, DROP | 테이블 구조 정의 |
| DML | SELECT, INSERT, UPDATE, DELETE | 데이터 조작 |
| DCL | GRANT, REVOKE | 권한 관리 |
| TCL | COMMIT, ROLLBACK | 트랜잭션 제어 |
관계형 데이터베이스의 핵심 개념
테이블(Table): 행(Row)과 열(Column)로 구성된 2차원 구조. 하나의 테이블은 하나의 주제를 나타낸다.
기본 키(Primary Key): 각 행을 고유하게 식별하는 컬럼. NULL이 될 수 없고, 중복될 수 없다.
외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하는 컬럼. 테이블 간 관계를 만들 때 쓴다.
정규화: 데이터 중복을 최소화하고 이상 현상을 방지하기 위해 테이블을 분리하는 과정. 1NF, 2NF, 3NF 등의 단계가 있다.
트랜잭션과 ACID
트랜잭션은 하나의 논리적 작업 단위다. 은행 이체처럼, “A 계좌에서 출금”과 “B 계좌에 입금”은 하나로 처리되어야 한다.
ACID 속성:
- Atomicity(원자성): 모두 성공하거나 모두 실패
- Consistency(일관성): 트랜잭션 전후 데이터 일관성 유지
- Isolation(격리성): 동시 실행 트랜잭션 간 간섭 없음
- Durability(지속성): 완료된 트랜잭션은 영구 반영
출처
- 에이콘 아카데미 출판
- SQLD 개발자 스터디 교재 (Oracle 11g, SQL Developer)