docker λ‘ PostgreSQL λμ°κΈ°
postgres λ컀 μ΄λ―Έμ§ pull
docker pull postgres:alpine
Bash
볡μ¬
λλ κ²½λνλ μ΄λ―Έμ§μΈ alpine λ²μ μ μ¬μ©νλ€.
λ컀 컨ν μ΄λ μ€ν
λ°μμ¨ postgres:alpine μ΄λ―Έμ§λ₯Ό 컨ν
μ΄λν μν¨λ€.
# docker run --name [컨ν
μ΄λλͺ
] -e [νκ²½λ³μν€=νκ²½λ³μκ°] -d -p [ν¬νΈλ°μΈλ©] [μ΄λ―Έμ§λͺ
]
docker run --name postgres-0 -e POSTGRES_PASSWORD=password -d -p 5432:5432 postgres:alpine
Bash
볡μ¬
μ΅μ
μ μλμ κ°λ€.
β’
--name : 컨ν
μ΄λ μ΄λ¦μ λͺ
μνλ μ΅μ
β’
-e : 컨ν
μ΄λμ νκ²½λ³μλ₯Ό μ€μ νλ μ΅μ
. μ¬κΈ°μλ POSTGRES_PASSWORD=password νκ²½λ³μλ₯Ό μ€μ νλ€.
β’
-d : 컨ν
μ΄λκ° detached λͺ¨λλ‘ μ€νλμ΄μ λ°±κ·ΈλΌμ΄λμμ λμνκ² λλ€.
β’
-p : νΈμ€νΈ ν¬νΈμ 컨ν
μ΄λ ν¬νΈλ₯Ό λ°μΈλ©νλ μ΅μ
( νΈμ€νΈ 5432 ν¬νΈ β 컨ν
μ΄λ 5432 ν¬νΈ)
μ°Έκ³ μλ£
컨ν
μ΄λ μ€ν κ²°κ³Ό μ°½ (-d μ΅μ
μΌλ‘ ꡬλμμΌ°κΈ° λλ¬Έμ λ°±κ·ΈλΌμ΄λλ‘ μ€νλκ³ ν°λ―Έλμ 컨ν
μ΄λ id λ§ μΆλ ₯λλ€)
DB μ μ
1. λ컀 컨ν μ΄λλ‘ μ§μ μ μ
μ€νλκ³ μλ 컨ν
μ΄λμ μ§μ μ μν΄μ bash μ μ€ν
# docker exec -it [컨ν
μ΄λλͺ
] bash
docker exec -it postgres-0 bash
Bash
볡μ¬
# psql -h {νΈμ€νΈλͺ
} -p {ν¬νΈ λ²νΈ} -U {μ¬μ©μλͺ
} -d {λ°μ΄ν°λ² μ΄μ€λͺ
}
psql -U postgres
Bash
볡μ¬
λ‘컬μ μλ postgreSQL μλ²λ νΈμ€νΈλͺ
, ν¬νΈλ²νΈ λ₯Ό μλ΅ κ°λ₯νλ€.
κ·Έλ¦¬κ³ μ¬μ©μλͺ
κ³Ό λ°μ΄ν°λ² μ΄μ€λͺ
μ΄ κ°μΌλ©΄ λ°μ΄ν°λ² μ΄μ€λͺ
λν μλ΅ κ°λ₯νλ€.
λ°λΌμ psql -U postgres λ§μΌλ‘λ μ μμ΄ κ°λ₯νλ€.
(λ컀 μ΄λ―Έμ§λ‘ λ€μ΄ λ°μ postgreSQL μ λν΄νΈ μ¬μ©μλͺ
κ³Ό λ°μ΄ν°λ² μ΄μ€λͺ
μ λ λ€ postgre μ΄λ€.)
μ μνλ©΄
2. λ‘컬μμ μ μ
컨ν
μ΄λμΈλΆν¬νΈ(λ‘컬 ν¬νΈ) κ³Ό 컨ν
μ΄λλ΄λΆν¬νΈ(컨ν
μ΄λ ν¬νΈ) λ₯Ό μ΄μ©νμ¬ λ‘컬μμ μ μνλ€.
컨ν
μ΄λλ₯Ό μ€νν λ 5432:5432 λ‘ ν¬νΈλ°μΈλ© μμΌ°μΌλ―λ‘ λ‘컬μμ 5432 λ‘ μ μνλ©΄ 컨ν
μ΄λμ 5432 ν¬νΈλ‘ μ μλλ€.
psql -h localhost -p 5432 -U postgres
Bash
볡μ¬
μ΄ λ λ§μ½ λ‘컬μ 5432 μμ λμκ°λ κΈ°μ‘΄μ postgreSQL μ΄ μλ€λ©΄ νλ‘μΈμ€ μ’
λ£λ₯Ό μμΌμ£Όμ΄μΌ νλ€. (ν¬νΈ μΆ©λλ¨)
brew services stop postgresql # λ‘컬μμ ꡬλμ€μΈ postgreSQL μ€μ§
Bash
볡μ¬
λ컀 컨ν
μ΄λλ‘ λμμ§ postgreSQL μ μ μν λͺ¨μ΅
psql κΈ°λ³Έ λͺ λ Ήμ΄
GUI ν΄λ‘λ DB λ₯Ό μ‘°μν μ μμ§λ§ CLI λ‘ postgreSQL λ₯Ό λ€λ£¨κΈ° μν΄μλ psql (postgreSQL μ) μ μ¬μ©νλ€.
psql μ 컀맨λ μμ \ λ₯Ό λΆνλ€.
psql λμλ§ : \?
postgres=# \?
Bash
볡μ¬
sql λμλ§ : \h
λμλ§ λͺ©λ‘ 보기
postgres=# \h
# λλ postgres=# \help
Bash
볡μ¬
νΉμ SQL λμλ§ λ³΄κΈ°
\h μ λμ¨ μΏΌλ¦¬λ€μ λ λ²μ§Έ μΈμλ‘ λ겨주면 νΉμ SQL μ λν λμλ§μ λ³Ό μ μλ€.
# select μ λν λμλ§
postgres=# \h select
Bash
볡μ¬
μ μ λͺ©λ‘ μ‘°ν : \du
postgres=# \du
Bash
볡μ¬
λ°μ΄ν°λ² μ΄μ€ λͺ λ Ήμ΄
λ°μ΄ν°λ² μ΄μ€ μμ± : create database {λ°μ΄ν°λ² μ΄μ€λͺ }
# create database {λ°μ΄ν°λ² μ΄μ€λͺ
}
postgres=# create database testdb;
Bash
볡μ¬
λ°μ΄ν°λ² μ΄μ€ λͺ©λ‘ μ‘°ν : \l
postgres=# \l
# λλ postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
(4 rows)
Bash
볡μ¬
λ°μ΄ν°λ² μ΄μ€ μ¬μ©(μ μ) : \c
# postgres=# \c [λ°μ΄ν°λ² μ΄μ€λͺ
]
# testdb λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©
postgres=# \c testdb
psql (14.6 (Homebrew), server 15.1)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
You are now connected to database "testdb" as user "postgres".
testdb=#
Bash
볡μ¬
μ€ν€λ§ λͺ λ Ήμ΄
postgreSQL μ λ°μ΄ν°λ² μ΄μ€ > μ€ν€λ§ > ν
μ΄λΈμ κ³μΈ΅κ΅¬μ‘°λ₯Ό κ°μ§λ€.
MySQL μμ λ°μ΄ν°λ² μ΄μ€ == μ€ν€λ§ μΈ κ²κ³Ό λμ‘°μ μ΄λ€.
β’
postgreSQL μμλ λ°μ΄ν°λ² μ΄μ€ μμ μ€ν€λ§λ₯Ό λ§λ€κ³ , μ€ν€λ§ μμ ν
μ΄λΈμ μμ±ν¨
β’
λν΄νΈλ‘ public μ€ν€λ§κ° μ‘΄μ¬νκ³ , λ³λμ λͺ
λ Ήμ νμ§ μκ³ ν
μ΄λΈμ λ§λ€κ² λλ©΄ μ΄ public μ€ν€λ§ μμ ν
μ΄λΈμ΄ μμ±λ¨
μ€ν€λ§ μ‘°ν : \dn
testdb=# \dn
List of schemas
Name | Owner
--------+-------------------
public | pg_database_owner
(1 row)
Bash
볡μ¬
λ°μ΄ν°λ² μ΄μ€ μμ λν΄νΈ μ€ν€λ§λ‘ public μ΄ μ‘΄μ¬νλ€.
μ€ν€λ§ μμ± : create schema {μ€ν€λ§λͺ }
testdb=# create schema myschema;
CREATE SCHEMA
# μ λλ‘ μμ±λμλμ§ μ€ν€λ§ μ‘°ν
testdb=# \dn
List of schemas
Name | Owner
----------+-------------------
myschema | postgres
public | pg_database_owner
(2 rows)
Bash
볡μ¬
μ€ν€λ§λͺ μμ : ALTER SCHEMA {name} RENAME TO {new_name}
testdb=# \dn
List of schemas
Name | Owner
----------+-------------------
myschema | postgres
public | pg_database_owner
(2 rows)
testdb=# alter schema myschema rename to ourschema;
ALTER SCHEMA
testdb=# \dn
List of schemas
Name | Owner
-----------+-------------------
ourschema | postgres
public | pg_database_owner
(2 rows)
Bash
볡μ¬
myschema β ourschema λ‘ μ€ν€λ§λͺ
λ³κ²½
μ€ν€λ§ μμ : DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
testdb=# \dn
List of schemas
Name | Owner
-----------+-------------------
ourschema | postgres
public | pg_database_owner
(2 rows)
testdb=# drop schema ourschema;
DROP SCHEMA
testdb=# \dn
List of schemas
Name | Owner
--------+-------------------
public | pg_database_owner
(1 row)
Bash
볡μ¬
ourschema μμ
ν μ΄λΈ λͺ λ Ήμ΄
MySQL ν
μ΄λΈ λͺ
λ Ήμ΄μ ν° νμμ κ±°μ λΉμ·νλ€.
postgreSQL μ λ λ§μ λ°μ΄ν° νμ
μ μ§μνλ€.
ν μ΄λΈ μμ± : create table
ν μ΄λΈ μμ : alter table
ν μ΄λΈ μμ : drop table
μ 리
κΈ°λ³Έμ μΈ psql 컀맨λμ DDL μμ£Όλ‘ μμ½νμΌλ©° λ μμΈν λͺ
λ Ήμ΄μ μ¬μ©λ²μ PostgreSQL Tutorial μ°Έκ³
μ°Έκ³ μλ£