PostgreSQL 학습 가이드
PostgreSQL 학습 가이드¶
소개¶
이 폴더는 PostgreSQL 관계형 데이터베이스를 학습하기 위한 자료를 담고 있습니다. SQL 기초부터 고급 기능, 운영까지 단계별로 학습할 수 있습니다.
대상 독자: SQL 입문자 ~ 중급자, 백엔드 개발자
학습 로드맵¶
[기초] [중급] [고급]
│ │ │
▼ ▼ ▼
PostgreSQL 기초 ──▶ JOIN ──────────▶ 함수/프로시저
│ │ │
▼ ▼ ▼
DB 관리 ──────────▶ 집계와 그룹 ────▶ 트랜잭션
│ │ │
▼ ▼ ▼
테이블/타입 ──────▶ 서브쿼리/CTE ───▶ 트리거
│ │ │
▼ ▼ ▼
CRUD 기본 ────────▶ 뷰와 인덱스 ────▶ 백업/운영
│
▼
조건과 정렬
선수 지식¶
- 기본적인 컴퓨터 사용법
- 터미널/명령줄 사용 경험
- (선택) Docker 기초 지식
파일 목록¶
| 파일명 | 난이도 | 주요 내용 |
|---|---|---|
| 01_PostgreSQL_Basics.md | ⭐ | 개념, 설치, psql 기본 |
| 02_Database_Management.md | ⭐ | DB 생성/삭제, 사용자, 권한 |
| 03_Tables_and_Data_Types.md | ⭐⭐ | CREATE TABLE, 자료형, 제약조건 |
| 04_CRUD_Basics.md | ⭐ | SELECT, INSERT, UPDATE, DELETE |
| 05_Conditions_and_Sorting.md | ⭐⭐ | WHERE, ORDER BY, LIMIT |
| 06_JOIN.md | ⭐⭐ | INNER, LEFT, RIGHT, FULL JOIN |
| 07_Aggregation_and_Grouping.md | ⭐⭐ | COUNT, SUM, GROUP BY, HAVING |
| 08_Subqueries_and_CTE.md | ⭐⭐⭐ | 서브쿼리, WITH 절 |
| 09_Views_and_Indexes.md | ⭐⭐⭐ | VIEW, INDEX, EXPLAIN |
| 10_Functions_and_Procedures.md | ⭐⭐⭐ | PL/pgSQL, 사용자 정의 함수 |
| 11_Transactions.md | ⭐⭐⭐ | ACID, BEGIN, COMMIT, 격리 수준 |
| 12_Triggers.md | ⭐⭐⭐ | 트리거 생성 및 활용 |
| 13_Backup_and_Operations.md | ⭐⭐⭐⭐ | pg_dump, 모니터링, 운영 |
| 14_JSON_JSONB.md | ⭐⭐⭐ | JSON 연산자, 인덱싱, 스키마 검증 |
| 15_Query_Optimization.md | ⭐⭐⭐⭐ | EXPLAIN ANALYZE, 인덱스 전략 |
| 16_Replication_HA.md | ⭐⭐⭐⭐⭐ | 스트리밍 복제, 논리 복제, 페일오버 |
| 17_Window_Functions.md | ⭐⭐⭐ | OVER, ROW_NUMBER, RANK, LEAD/LAG |
| 18_Table_Partitioning.md | ⭐⭐⭐⭐ | Range/List/Hash 파티셔닝 |
| 19_Full_Text_Search.md | ⭐⭐⭐ | tsvector/tsquery, GIN 인덱스, 랭킹, pg_trgm |
| 20_Security_Access_Control.md | ⭐⭐⭐⭐ | 역할, 행 수준 보안, pg_hba.conf, SSL, 감사 로깅 |
추천 학습 순서¶
초급 (SQL 입문)¶
- PostgreSQL 기초 → DB 관리 → 테이블/타입 → CRUD → 조건/정렬
중급 (데이터 분석)¶
- JOIN → 집계와 그룹 → 서브쿼리/CTE → 뷰와 인덱스
고급 (DBA/백엔드)¶
- 함수/프로시저 → 트랜잭션 → 트리거 → 백업/운영
심화 (전문가)¶
- JSON/JSONB → 쿼리 최적화 심화 → 윈도우 함수 → 파티셔닝 → 복제와 고가용성
실습 환경¶
Docker (권장)¶
# PostgreSQL 컨테이너 실행
docker run --name postgres-study \
-e POSTGRES_PASSWORD=mypassword \
-p 5432:5432 \
-d postgres:16
# psql 접속
docker exec -it postgres-study psql -U postgres
macOS (Homebrew)¶
brew install postgresql@16
brew services start postgresql@16
psql postgres
Linux (Ubuntu/Debian)¶
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo -u postgres psql
psql 기본 명령어¶
| 명령어 | 설명 |
|---|---|
\l |
데이터베이스 목록 |
\c dbname |
데이터베이스 전환 |
\dt |
테이블 목록 |
\d tablename |
테이블 구조 |
\q |
psql 종료 |