PostgreSQL(ํฌ์คํธ๊ทธ๋ ์คํ์, ์ค์ฌ์ Postgres)์ ๊ฐ์ฒด-๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋๋ค.
์ด๋ฆ ์ ๋:
1986๋ : Michael Stonebraker ๊ต์ ์ฃผ๋๋ก ๊ฐ๋ฐ ์์
1996๋
๋ถํฐ ๊ณต์์ ์ผ๋ก PostgreSQL์ด๋ผ๋ ์ด๋ฆ ์ฌ์ฉ
| ํญ๋ชฉ | PostgreSQL | SQLite | MySQL |
|---|---|---|---|
| ์ค์น ํํ | ์๋ฒ ๊ธฐ๋ฐ | ํ์ผ ๊ธฐ๋ฐ (๋ด์ฅํ) | ์๋ฒ ๊ธฐ๋ฐ |
| ํ์ฅ์ฑ | ๋งค์ฐ ๋์ (MVCC, ํ์ฅํจ์) | ๋ฎ์ | ์ค๊ฐ |
| ๋์์ฑ ์ฒ๋ฆฌ | MVCC(๋ค์ค ๋ฒ์ ๋์์ฑ) ์ง์ | ๋จ์ผ ํ๋ก์ธ์ค | ์ ํ์ ๋ฝ ๊ธฐ๋ฐ |
| ํ์ค SQL | SQL ํ์ค ์ค์์จ ๋์ | ๊ฑฐ์ ์ค์ | ์ผ๋ถ ๋ฒ์ด๋จ |
| JSON ์ง์ | โ ์์ ์ง์ | โ ์์ | โ ์์ |
| ์ฉ๋ | ๊ธฐ์ , ๋ถ์, AI ์ฐ๋ ๋ฑ | ๋ชจ๋ฐ์ผ, IoT, ๊ฐ๋จํ ์ฑ | ์น ๋ฐฑ์๋์ฉ ๋์ค์ ์ ํ์ง |
๐ PostgreSQL์ ๋ํ ์์คํ , AI, ํต๊ณ, ๋ณต์กํ ์ฟผ๋ฆฌ์ ํนํ ๊ฐ๋ ฅํฉ๋๋ค.
๋ฌผ๋ก ์ ๋๋ค! PostgreSQL์์ ์์ฃผ ์ฐ์ด๋ ๋ช ๋ น์ด(Command) ๋ค์ ๋ชฉ์ ๋ณ๋ก ์ ๋ฆฌํ๊ณ , ๊ฐ๊ฐ ๊ฐ๋จํ ์ค๋ช ๋ ๋ง๋ถ์ฌ ๋๋ฆด๊ฒ์.
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
\l ๋๋ \list | ํ์ฌ ์๋ฒ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB) ๋ชฉ๋ก ๋ณด๊ธฐ |
\c DB๋ช
| ํด๋น ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ (connect) |
\dt | ํ์ฌ DB์ ์กด์ฌํ๋ ๋ชจ๋ ํ ์ด๋ธ ๋ชฉ๋ก ๋ณด๊ธฐ |
\d ํ
์ด๋ธ๋ช
| ํน์ ํ ์ด๋ธ์ ์์ธ ๊ตฌ์กฐ(์คํค๋ง) ๋ณด๊ธฐ |
\du | PostgreSQL ์ฌ์ฉ์(user) ๋ชฉ๋ก ๋ณด๊ธฐ |
\q | psql ์ข
๋ฃ (quit) |
\h | SQL ๋ฌธ๋ฒ ๋์๋ง ๋ณด๊ธฐ (e.g., \h CREATE TABLE) |
\conninfo | ํ์ฌ ์ฐ๊ฒฐ ์ํ ํ์ธ (DB๋ช , ์ฌ์ฉ์, ํธ์คํธ ๋ฑ) |
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
CREATE DATABASE dbname; | ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ |
DROP DATABASE dbname; | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ |
ALTER DATABASE dbname ...; | DB ์์ฑ ๋ณ๊ฒฝ |
SELECT current_database(); | ํ์ฌ ์ ์ ์ค์ธ DB ์ด๋ฆ ํ์ธ |
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
CREATE TABLE ํ
์ด๋ธ๋ช
(...); | ํ ์ด๋ธ ์์ฑ |
DROP TABLE ํ
์ด๋ธ๋ช
; | ํ ์ด๋ธ ์ญ์ |
ALTER TABLE ... | ํ ์ด๋ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ |
INSERT INTO ... VALUES (...); | ๋ฐ์ดํฐ ์ฝ์ |
SELECT * FROM ํ
์ด๋ธ๋ช
; | ํ ์ด๋ธ ๋ด์ฉ ์กฐํ |
UPDATE ํ
์ด๋ธ๋ช
SET ... WHERE ...; | ๋ฐ์ดํฐ ์์ |
DELETE FROM ํ
์ด๋ธ๋ช
WHERE ...; | ๋ฐ์ดํฐ ์ญ์ |
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
CREATE USER username WITH PASSWORD '๋น๋ฐ๋ฒํธ'; | ์ฌ์ฉ์ ์์ฑ |
GRANT ALL PRIVILEGES ON DATABASE dbname TO username; | ์ฌ์ฉ์์๊ฒ ๊ถํ ๋ถ์ฌ |
DROP USER username; | ์ฌ์ฉ์ ์ญ์ |
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
\timing | ์ฟผ๋ฆฌ ์คํ ์๊ฐ ์ธก์ on/off |
\i ํ์ผ.sql | SQL ์คํฌ๋ฆฝํธ ํ์ผ ์คํ |
\x | ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ก ๋ณด๊ธฐ ํํ๋ก ์ ํ (๊ฐ๋ ์ฑ โ) |
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
CREATE DATABASE legaldb;
-- legaldb์ ์ ์
\c legaldb
-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE laws (
law_id TEXT PRIMARY KEY,
law_name TEXT,
enforcement_date DATE
);
-- ๋ฐ์ดํฐ ์ฝ์
INSERT INTO laws VALUES ('001872', '๊ทผ๋ก๊ธฐ์ค๋ฒ', '2025-10-23');
-- ์กฐํ
SELECT * FROM laws;
PostgreSQL์ SQL ๊ธฐ๋ฐ์ด์ง๋ง
\๋ก ์์ํ๋ ๋ช ๋ น์ด(\l,\dt๋ฑ)๋ psql ์ ์ฉ ๋ช ๋ น์ด์ ๋๋ค.
์ค์ ์์๋ SQL +psql๋ช ๋ น์ด๋ฅผ ๋ณํํด์ ์ฌ์ฉํ๋ ๊ฒ ํต์ฌ์ ๋๋ค.
sudo -u postgres psql
๋๋ ๋ณธ์ธ์ด postgres ๋น๋ฐ๋ฒํธ๋ฅผ ์๊ณ ์๋ค๋ฉด:
psql -U postgres
legaldb๋ก ์ด๋PostgreSQL ์์ ์ง์ ํ์ผ๋ฉด ์ด์ ์ด ๋ช ๋ น์ด ์๋ํฉ๋๋ค:
\c legaldb
์ถ๋ ฅ:
You are now connected to database "legaldb" as user "postgres".
\dt
# 1. PostgreSQL ์ ์
sudo -u postgres psql
# 2. legaldb ์ ์
\c legaldb
# 3. ํ
์ด๋ธ ๋ณด๊ธฐ
\dt
# 4. ํ
์ด๋ธ ๋ด์ฉ ๋ณด๊ธฐ
SELECT * FROM laws;
| ํ๊ณ ์ถ์ ์ผ | ๋ช ๋ น์ด |
|---|---|
| PostgreSQL CLI ์ง์ | sudo -u postgres psql |
| DB ์ ํ | \c legaldb (psql ์์์๋ง) |
| ํ ์ด๋ธ ๋ชฉ๋ก | \dt |
| ์ข ๋ฃ | \q |