ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿ“Œ PostgreSQL๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ: ์ด๋ก ๊ณผ ์‹ค์Šต

2.1 ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ•๊ณผ ํ…Œ์ด๋ธ” ์„ค๊ณ„

PostgreSQL์„ ์„ค์น˜ํ•œ ํ›„, ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ•์„ ์ตํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” PostgreSQL์—์„œ ๊ธฐ๋ณธ์ ์ธ SQL ๋ฌธ๋ฒ•์„ ์‚ดํŽด๋ณด๊ณ ,
ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


2.1.1 SQL ๊ฐœ์š” ๋ฐ ๊ธฐ๋ณธ ๋ช…๋ น์–ด

๋ฐ˜์‘ํ˜•

SQL(Structured Query Language)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
SQL์€ ๋ฐ์ดํ„ฐ ์ •์˜(DDL), ๋ฐ์ดํ„ฐ ์กฐ์ž‘(DML), ๋ฐ์ดํ„ฐ ์ œ์–ด(DCL) ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

โœ… SQL์˜ ์ฃผ์š” ์œ ํ˜•

SQL ์œ ํ˜• ์„ค๋ช… ์ฃผ์š” ๋ช…๋ น์–ด

DDL (Data Definition Language) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(์Šคํ‚ค๋งˆ)๋ฅผ ์ •์˜ํ•˜๋Š” ๋ช…๋ น์–ด CREATE, ALTER, DROP, TRUNCATE
DML (Data Manipulation Language) ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด INSERT, UPDATE, DELETE
DQL (Data Query Language) ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด SELECT
DCL (Data Control Language) ๊ถŒํ•œ์„ ๋ถ€์—ฌ/ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น์–ด GRANT, REVOKE
TCL (Transaction Control Language) ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด COMMIT, ROLLBACK, SAVEPOINT

2.1.2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ

๐Ÿ”น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

PostgreSQL์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด CREATE DATABASE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

CREATE DATABASE mydb;

๐Ÿ”น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก ํ™•์ธ

PostgreSQL์—์„œ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

\l

๐Ÿ”น ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†

PostgreSQL์—์„œ๋Š” \c ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

\c mydb;

๐Ÿ”น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด DROP DATABASE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DROP DATABASE mydb;

โš  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


2.1.3 ํ…Œ์ด๋ธ” ์„ค๊ณ„ ๋ฐ ์ƒ์„ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํ…Œ์ด๋ธ”(Table) ์„ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์ปฌ๋Ÿผ, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โœ… PostgreSQL ๋ฐ์ดํ„ฐ ํƒ€์ž…

๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ค๋ช… ์˜ˆ์ œ

INTEGER ์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ 1, 100, -42
SERIAL ์ž๋™ ์ฆ๊ฐ€ ์ •์ˆ˜ (PK์— ์‚ฌ์šฉ) 1, 2, 3...
VARCHAR(n) ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด (์ตœ๋Œ€ n) 'Hello', 'PostgreSQL'
TEXT ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด (์ œํ•œ ์—†์Œ) '๊ธด ๋ฌธ์ž์—ด๋„ ์ €์žฅ ๊ฐ€๋Šฅ'
BOOLEAN ์ฐธ/๊ฑฐ์ง“ ๊ฐ’ TRUE, FALSE
DATE ๋‚ ์งœ ๋ฐ์ดํ„ฐ '2025-03-07'
TIMESTAMP ๋‚ ์งœ + ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ '2025-03-07 12:30:00'
JSONB JSON ๋ฐ์ดํ„ฐ ์ €์žฅ '{"name": "John", "age": 30}'

๐Ÿ”น ํ…Œ์ด๋ธ” ์ƒ์„ฑ (CREATE TABLE)

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    age INTEGER CHECK (age >= 18),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

โœ… SERIAL → ์ž๋™ ์ฆ๊ฐ€ (Auto Increment)
โœ… PRIMARY KEY → ๊ธฐ๋ณธ ํ‚ค(์ค‘๋ณต ๋ถˆ๊ฐ€)
โœ… UNIQUE → ๊ณ ์œ ํ•œ ๊ฐ’ ์œ ์ง€
โœ… CHECK → ํŠน์ • ์กฐ๊ฑด ์ ์šฉ
โœ… DEFAULT → ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •


๐Ÿ”น ํ…Œ์ด๋ธ” ๋ชฉ๋ก ํ™•์ธ

ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

\dt

๐Ÿ”น ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ํ™•์ธ

ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ(์Šคํ‚ค๋งˆ)๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

\d users

2.1.4 ๋ฐ์ดํ„ฐ ์‚ฝ์ž… (INSERT INTO)

๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” INSERT INTO ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

INSERT INTO users (name, email, age) VALUES 
('Alice', 'alice@example.com', 25),
('Bob', 'bob@example.com', 30);

โœ… ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


2.1.5 ๋ฐ์ดํ„ฐ ์กฐํšŒ (SELECT)

PostgreSQL์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SELECT * FROM users;

โœ… ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

SELECT name, email FROM users WHERE age >= 25;

โœ… WHERE ์กฐ๊ฑด์„ ์ด์šฉํ•˜์—ฌ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT * FROM users ORDER BY created_at DESC;

โœ… ORDER BY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2.1.6 ๋ฐ์ดํ„ฐ ์ˆ˜์ • (UPDATE) ๋ฐ ์‚ญ์ œ (DELETE)

๐Ÿ”น ๋ฐ์ดํ„ฐ ์ˆ˜์ • (UPDATE)

UPDATE users SET age = 26 WHERE name = 'Alice';

โœ… Alice ์‚ฌ์šฉ์ž์˜ ๋‚˜์ด๋ฅผ 26์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ๋ฐ์ดํ„ฐ ์‚ญ์ œ (DELETE)

DELETE FROM users WHERE name = 'Bob';

โœ… Bob ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.


2.1.7 ํŠธ๋žœ์žญ์…˜ (TRANSACTION)

PostgreSQL์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜(Transaction) ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BEGIN;

UPDATE users SET age = 40 WHERE name = 'Alice';

ROLLBACK;  -- ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ทจ์†Œ

โœ… ROLLBACK์„ ์‹คํ–‰ํ•˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ทจ์†Œ๋ฉ๋‹ˆ๋‹ค.

BEGIN;

UPDATE users SET age = 40 WHERE name = 'Alice';

COMMIT;  -- ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ

โœ… COMMIT์„ ์‹คํ–‰ํ•˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ตœ์ข… ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.


2.1.8 ๊ฒฐ๋ก : ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ตํžˆ๊ธฐ

โœ… PostgreSQL์—์„œ DDL, DML, DQL, DCL, TCL์„ ์ดํ•ดํ•ด์•ผ ํ•จ
โœ… ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•ด์•ผ ํ•จ
โœ… INSERT, SELECT, UPDATE, DELETE๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ
โœ… ํŠธ๋žœ์žญ์…˜(Transaction) ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ

์ด์ œ ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ•์„ ์ตํ˜”์œผ๋‹ˆ, ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๊ณ ๊ธ‰ SQL ํ™œ์šฉ ๋ฐ ์ธ๋ฑ์Šค ์ตœ์ ํ™”๋ฅผ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿš€


๐Ÿ”Ž ๋‹ค์Œ ๊ธ€ ์˜ˆ๊ณ : ๊ณ ๊ธ‰ SQL๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿ“Œ ๋‹ค์Œ ํŽธ: 2.2 ๊ณ ๊ธ‰ SQL๊ณผ ์ธ๋ฑ์Šค ์ตœ์ ํ™”

 

์ด์ œ PostgreSQL์˜ ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ•๊ณผ ํ…Œ์ด๋ธ” ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ธ€์ด ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๊ณ ๊ธ‰ SQL ํ™œ์šฉ ๋ฐ ์ธ๋ฑ์Šค ์ตœ์ ํ™”๋ฅผ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€๐Ÿ˜Š

๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•