PostgreSQL 개요 및 기본 개념
1️⃣ PostgreSQL 소개 및 기본 개념
1. PostgreSQL 소개 및 역사
PostgreSQL(줄여서 Postgres)는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)으로, 뛰어난 확장성, ACID 트랜잭션 지원, JSON/BSON 데이터 타입을 포함한 다양한 기능을 제공합니다.
- 최초 개발: 1986년 캘리포니아 버클리 대학에서 시작
- 공식 출시: 1996년 PostgreSQL 6.0 발표
- 현재 PostgreSQL은 전 세계 오픈소스 커뮤니티에 의해 활발히 개발 및 유지보수됨
PostgreSQL은 MySQL, MariaDB보다 더욱 강력한 데이터 무결성 및 확장 기능을 제공하는 오픈소스 RDBMS입니다.
2. PostgreSQL vs MySQL vs MariaDB vs Oracle
기능 | PostgreSQL | MySQL | MariaDB | Oracle |
---|---|---|---|---|
라이선스 | PostgreSQL 라이선스 (BSD 스타일) | GPL v2 | GPL v2 | 상용 (Oracle 라이선스) |
데이터베이스 엔진 | 자체 엔진 | InnoDB, MyISAM | InnoDB, Aria, TokuDB | 자체 엔진 |
ACID 트랜잭션 | ✅ | ✅ (InnoDB) | ✅ (InnoDB) | ✅ |
JSON 지원 | ✅ | ✅ | ✅ | ✅ |
확장성 | 매우 높음 (다양한 확장 기능 지원) | 낮음 | 중간 | 매우 높음 |
PostgreSQL은 고급 쿼리 최적화, JSON 지원, 확장 가능성 면에서 강력한 장점을 가집니다.
3. PostgreSQL의 주요 기능 및 특징
PostgreSQL의 주요 기능을 정리하면 다음과 같습니다.
✔ 강력한 ACID 트랜잭션 지원
✔ 다양한 데이터 타입 지원 (JSON, XML, UUID, HSTORE, 배열 등)
✔ MVCC (Multi-Version Concurrency Control)으로 동시성 지원
✔ CTE(Common Table Expressions) 및 윈도우 함수 지원
✔ 파티셔닝 및 샤딩 기능 지원
✔ 확장 기능 및 사용자 정의 함수 지원 (PL/pgSQL, Python, JavaScript 등)
✔ 물리적/논리적 복제 및 스트리밍 복제 지원
4. 라이선스 및 배포 방식 (오픈소스 정책)
- PostgreSQL은 BSD 스타일의 PostgreSQL 라이선스를 따르며, 상업적 사용에 대한 제한이 없습니다.
- PostgreSQL은 공식 배포판 외에도 Amazon RDS, Google Cloud SQL, Microsoft Azure Database와 같은 클라우드 서비스에서도 사용할 수 있습니다.
2️⃣ PostgreSQL 설치 및 설정 (Linux, Windows, Docker)
1. Linux에서 PostgreSQL 설치
Ubuntu에서 PostgreSQL을 설치하는 방법:
sudo apt update
sudo apt install postgresql postgresql-contrib
PostgreSQL 서비스 실행 및 확인:
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl status postgresql
2. Windows에서 PostgreSQL 설치
- PostgreSQL 공식 웹사이트에서 Windows용 설치 파일 다운로드
- 실행 후 설치 진행 (pgAdmin 포함)
- PostgreSQL 서비스 실행 확인
3. Docker를 이용한 PostgreSQL 실행
docker run --name postgres-container -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
컨테이너 내부에서 PostgreSQL 접속:
docker exec -it postgres-container psql -U postgres
3️⃣ 기본적인 psql CLI 사용법
PostgreSQL의 CLI 도구인 psql
을 사용하면 SQL 쿼리를 실행하고 데이터베이스를 관리할 수 있습니다.
1. psql 접속
sudo -u postgres psql
2. 기본적인 psql 명령어
명령어 | 설명 |
---|---|
\l |
데이터베이스 목록 조회 |
\c database_name |
특정 데이터베이스로 접속 |
\dt |
테이블 목록 조회 |
\d table_name |
특정 테이블의 구조 확인 |
\q |
psql 종료 |
4️⃣ 데이터베이스 생성 및 삭제
1. 데이터베이스 생성
CREATE DATABASE mydb;
PostgreSQL은 UTF-8을 기본 인코딩으로 사용하며, 특정 인코딩을 지정할 수도 있습니다.
CREATE DATABASE mydb WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
2. 데이터베이스 삭제
DROP DATABASE mydb;
5️⃣ 기본적인 SQL 문법 복습 (SELECT, INSERT, UPDATE, DELETE)
1. 테이블 생성
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
age INT,
email VARCHAR(100) UNIQUE
);
2. 데이터 삽입
INSERT INTO users (name, age, email) VALUES ('Alice', 30, 'alice@example.com');
3. 데이터 조회
SELECT * FROM users;
4. 데이터 수정
UPDATE users SET age = 31 WHERE name = 'Alice';
5. 데이터 삭제
DELETE FROM users WHERE name = 'Alice';
마지막 수정일자