기타

PostgreSQL를 공부하기로 했습니다. with 기본 세팅

cantor 2023. 11. 26. 12:21

SQL을 공부하고자, 실용 SQL이라는 서적을 구입했습니다.

PostgreSQL의 실습을 다루는 책입니다.

 

PostgreSQL을 선택한 이유

 

처음에는 MySQL을 공부하려고 했으나, 많은 곳에서 기본 SQL로

PostgreSQL을 사용하고 있다는 것을 알게 되었습니다.

 

Superbase가 제공하는 DBMS도 PostgreSQL기반이고,

Prisma와 같은 여러 ORM도 PostgreSQL을 기본 설정으로 제공하는 경우가 많아서

사용할 수 있는 기술이라는 믿음이 생겼습니다.

 

결정적으로 MySQL과 같은 ANSI SQL이라는 같은 표준을 따르고 있어,

나중에 MySQL을 요구하더라도 쉽게 배울수있을거같아 부담 없게 선택하였습니다.

 

학습 소스

 

영진닷컴의 실용SQL 서적

https://shop.youngjin.com/goods/view?no=710

 

실용 SQL

PostgreSQL로 시작하는 데이터 스토리텔링 가이드북

shop.youngjin.com

 

예제

https://github.com/anthonydb/practical-sql-2

 

GitHub - anthonydb/practical-sql-2: Code and Data for the Second Edition of "Practical SQL" by Anthony DeBarros, published by No

Code and Data for the Second Edition of "Practical SQL" by Anthony DeBarros, published by No Starch Press (2022). - GitHub - anthonydb/practical-sql-2: Code and Data for the Second Editio...

github.com

 

git clone 명령어를 통해 레포지토리를 복제해서 보면 편할 거 같습니다.

 

 

초기 세팅

 

 

1. PostgreSQL 설치

 

저는 윈도하위 Linux 시스템으로 Ubuntu를 사용하는데,

PostgreSQL이 이미 설치되어 있었습니다.

 

터미널에서 버전을 확인하자 16 버전이 설치되어 있었습니다.

```

➜  입력:

practical psql -V

 

출력:
psql (PostgreSQL) 16.0 (Ubuntu 16.0-1.pgdg22.04+1)

```

현재 최신버전은 16.1인데 그냥 사용해도 별 문제없을 것 같아 그냥 두었습니다.

 

 

2. 실행

 

```

 ~ 입력:

sudo -u postgres psql postgres

 

출력:
psql (16.0 (Ubuntu 16.0-1.pgdg22.04+1))
Type "help" for help.

```

정상적으로 실행되면 command line의 앞 기호가 `postgres-#` 로 변경됩니다. 

 

 

3. 비밀번호 설정

```

postgres=#  \password


Enter new password for user "postgres": //비밀번호 입력
Enter it again: //반복

```

 

4. 사용자 생성 및 권한 부여

 

Linux username과 같은 이름의 사용자 yj를 생성하고,

슈퍼유저 권한을 부여하였습니다.

 

```

postgres=# CREATE USER yj SUPERUSER

```

 

5. pgADMIN설치

 

노매드 코더강의도, 실용 sql서적에서도 

pgAdmin설치를 권하길래 시원하게 다 설치했습니다.

 

맥북유저라면 POSTICO를 사용하라고 합니다.

```

sudo apt install pgadmin4

```

 

6. python 설치

 

sql을 통해 데이터를 분석할 때 많은 경우에 python을 사용합니다.

그리서 미리 postgreSQL과 python을 함께 설치해 줍니다.

 

```

sudo apt install postgresql-plpython3-16

```