SQL이 필요한 이유
앱의 데이터는 메모리에만 있으면 재시작 시 사라집니다. 데이터베이스는 데이터를 영구적으로 저장하고 효율적으로 조회합니다.
주요 RDBMS
| 데이터베이스 | 특징 | 사용 사례 |
|---|---|---|
| PostgreSQL | 오픈소스, 강력한 기능 | 웹 앱, 엔터프라이즈 |
| MySQL | 빠름, 광범위 지원 | 웹 서비스 |
| SQLite | 파일 기반, 경량 | 모바일, 소규모 앱 |
| SQL Server | Microsoft | 기업 환경 |
핵심 개념
- 테이블 (Table): 데이터를 저장하는 2차원 구조
- 행 (Row/Record): 한 건의 데이터
- 열 (Column/Field): 데이터의 속성
- 기본키 (Primary Key): 행을 유일하게 식별하는 열 (보통
id) - 외래키 (Foreign Key): 다른 테이블의 기본키를 참조
실습 환경 설정
옵션 1: SQLite (가장 간단)
# Python에 기본 포함
python3 -c "import sqlite3; print('SQLite OK')"
# 또는 SQLite 브라우저 다운로드
# https://sqlitebrowser.org
옵션 2: PostgreSQL (권장)
# Docker로 실행
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres:16
# 접속
psql -h localhost -U postgres
첫 번째 SELECT
-- 모든 열, 모든 행 조회
SELECT * FROM users;
-- 특정 열만 조회
SELECT name, email FROM users;
-- 결과 예시
-- name | email
-- ------|----------------
-- 철수 | kim@example.com
-- 영희 | lee@example.com
테이블 생성 미리보기
CREATE TABLE users (
id SERIAL PRIMARY KEY, -- 자동 증가 정수
name VARCHAR(100) NOT NULL,
email VARCHAR(200) UNIQUE NOT NULL,
age INTEGER,
created_at TIMESTAMP DEFAULT NOW()
);
SQL 명령어 분류
정리
| 개념 | 설명 |
|---|---|
| SQL | 데이터베이스 조작 언어 |
| 테이블 | 행과 열로 구성된 데이터 저장 구조 |
| 기본키 | 각 행의 고유 식별자 |
| 외래키 | 테이블 간 관계 정의 |
| SELECT | 데이터 조회 |
다음 편에서는 SELECT 기초 — 원하는 데이터를 정확히 꺼내는 다양한 조회 방법을 배웁니다.