ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต - ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ๊ณผ ํ ์ด๋ธ ์ค๊ณ
octo54 2025. 3. 8. 14:26๐ 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 ํ์ฉ ๋ฐ ์ธ๋ฑ์ค ์ต์ ํ๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐๐
'study > postgresql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- nextJS
- Ktor
- Next.js
- llm
- Docker
- ์ฑ๋ด๊ฐ๋ฐ
- REACT
- ํ๋ก ํธ์๋
- rag
- ์น๊ฐ๋ฐ
- Project
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- ๋ก์ปฌLLM
- ๊ด๋ฆฌ์
- til
- PostgreSQL
- fastapi
- ๋ฆฌ์กํธ
- babel
- LangChain
- Python
- ํ์ด์ง
- github
- ๋ฐฑ์๋
- Webpack
- AI์ฑ๋ด
- ๋ฐฑ์๋๊ฐ๋ฐ
- kotlin
- Page
- nodejs
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |