[Postgresql] MacOS PostgreSQL ์ค์น ํ๊ณ ํ ์ด๋ธ ์์ฑ, ์กฐํํ๊ธฐ & ์ฟผ๋ฆฌ
PostgreSQL
PostgreSQL์ ํ์ฅ ๊ฐ๋ฅ์ฑ ๋ฐ ํ์ค ์ค์๋ฅผ ๊ฐ์กฐํ๋ ๊ฐ์ฒด-๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ํ๋ ์ ๋๋ค. ์คํ์์ค RDBMS๋ก์ ์ฌ์ฉ์จ์ Oracle, MySQL, Microsoft SQL์ ์ด์ด 4์๋ฅผ ๊ธฐ๋กํ๊ณ ์์ผ๋ฉฐ ํนํ MacOS ์๋ฒ์ ๊ฒฝ์ฐ์๋ PostgreSQL์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋๋ค.
โ
brew install postgresql
=> ๋๋ 14.1 ๊น์์ง

โ

์ค์น๊ฐ ์๋ฃ๋์์ต๋๋ค. To start postgresql : ์ด๋ผ๋ฉฐ ์น์ ํ๊ฒ ์์ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ค์, ๊ทธ๋๋ก ์ ๋ ฅํฉ๋๋ค.
โ
brew services start postgresql

โ
์ค์น๊ฐ ์๋ฃ๋์์ผ๋, ๋ฒ์ ์ ํ์ธ ํด ๋ณด๊ฒ ์ต๋๋ค.
postgres -V

์ด์ DB์ ์ ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
โ

Default ์ ์ ๊ณ์ ์ ํ์ธํ๋ ค๊ณ PostgreSQL ์ Document๋ฅผ ํ์ธํ๋๋ฐ, PostgreSQL์ด ์ค์น์ ์๋์ผ๋ก ๊ณ์ ์ ์์ฑํด์ค๋ค๊ณ ์จ์์ต๋๋ค.
โ
์ ๋ง์ธ์ง ์ ์ ํด์ ํ์ธ ํด ๋ณด๊ฒ ์ต๋๋ค.
psql postgres

์๋ ๋ช ๋ น์ด๋ก role ๋ฆฌ์คํธ๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค.
\du


์ ๋ง๋ก shane ์ด๋ผ๋ Superuser๊ฐ ์์ฑ๋์ด ์์ต๋๋ค. Q ๋ฅผ ์ ๋ ฅํด ๋น ์ ธ๋์ต๋๋ค.
โ
์ด์ Client๋ก ์ ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
PostgreSQL Client Tool๋ก๋ TablePlus, Psequel(MYSQL์ Sequel Pro ์ ๋๋ค), SQLPro, Postico ๋ฑ์ด ์๋ค๊ณ ํ๋๋ฐ์. ์ ๋ DBeaver๊ฐ ์ค์น๋์ด ์์ด ์๋ ๊ฑธ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.

PostgreSQL ์ ์ ํ ํ๊ณ
โ

ํ์ํ Driver๋ฅผ ๋ค์ด ๋ฐ์ต๋๋ค.

PostgreSQL ์์ ์์์ ํ์ธํ shane์ ์ ๋ ฅํด Test Connection ์ ์๋ฆฝํด๋ณด๋ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋ฉ๋๋ค.
โ
study๋ผ๋ ์ด๋ฆ์ database๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
create database study;

โ
testuser๋ผ๋ ์ด๋ฆ์ user๋ฅผ ์์ฑํฉ๋๋ค.
create user testuser with encrypted password 'testpass';

โ
testuser์๊ฒ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ฑ ๊ถํ๋ ๋ถ์ฌํฉ๋๋ค.
alter user testuser createdb

\du ๋ก ํ์ธํด๋ณด๋ ๊ถํ์ด ์ ์ค์ ๋์์ต๋๋ค.
โ
์์ฑํ ์ ์ ์๊ฒ ์๊น๋ง๋ study ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ชจ๋ ๊ถํ์ ์ฃผ๊ฒ ์ต๋๋ค.
grant all privileges on database study to testuser;
โ

์ฐ์ต์ฉ Database๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌํ์ง๋ง ๊ถํ ์ค์ ์ ์์ธํ๊ฒ ํ๋ ค๋ฉด ์๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์

https://www.postgresql.org/docs/13/sql-grant.html ์์ ํ์ธ ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ฆฌ์คํธ ๋ณด๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ ๋ ฅํฉ๋๋ค.
\list

์๋ ๋ช ๋ น์ผ๋ก ํ ์ด๋ธ ๋ฆฌ์คํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
\dt
์์ง ์๋ฌด ํ ์ด๋ธ๋ ์กด์ฌํ์ง ์์์ ์๋ ์ฌ์ง์ฒ๋ผ Did not find any relations. ๋ผ๊ณ ํฉ๋๋ค.
\connect ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ์ ๋ ฅํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฐ๊ฒฐํฉ๋๋ค.
\connect study

โ
์ถ๊ฐํ ์ฌ์ฉ์๋ก ์ ์ํด๋ณด๊ฒ ์ต๋๋ค. -U ๋ช ๋ น์ด์ username ์ ์ ๋ ฅ ํฉ๋๋ค.
psql postgres -U testuser

postgres-# ์์ postgres=> ์ผ๋ก ๋ฐ๋์์ต๋๋ค. #์ super user๋ฅผ ๋ป ํฉ๋๋ค.
์๋ก์์ฑํ study Database์ ์๋ก ์์ฑํ testuser๋ก DBeaver ์์ ์ ์ ํด ๋ณด๊ฒ ์ต๋๋ค.

Query ์ฟผ๋ฆฌ
CREATE TABLE list (
id serial PRIMARY KEY,
name VARCHAR(50),
time VARCHAR(100)
);
INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊ฐ๋์','2022-01-24');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊ถ์จ','2022-01-23');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์ด๋ฏผ์ ','2022-01-23');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊นํ๋ฆฌ','2022-01-21');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์ด๋ฏผํธ','2022-01-20');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์ฌ์ง๊ตฌ','2022-01-19');
SELECT * FROM list;
SELECT * FROM list WHERE time BETWEEN '2022-01-19' AND '2022-01-23';
