postgresql 설치

가으라늘·2022년 6월 20일
0
post-thumbnail

어쩌다 DB까지 공부하고 있다. 하긴 원래 나는 풀스택 과정을 밟은 신입이였지... DB를 공부하면 쿼리를 짜는데도 어느정도 익숙해지지 않을까 싶다. 지금 나를 괴롭히는건 수많은 테이블과 로그들이니까... 다 그만두고 싶다...

일단 개인적으로 postgresql에 대해 궁금했던 것은, postgresql이 RDBMS이면서, JSON을 저장할 수 있다는 것이었다. 그런데 이게 테이블 내에 JSON 타입을 저장할 수 있는 컬럼을 만들 수 있는 건지, 아니면 MongoDB처럼 저장을 하는건지 잘 모르겠다. 그래서 궁금한 마음에, 직접 postgresql을 설치하여 부딪혀보기로 했다.

애플 실리콘 맥에선 어떻게 postgresql을 설치해야하는지 검색해봤다. EDB를 이용한 방법, postgres.app을 이용하는 방법, homebrew를 이용하는 방법, MacPorts, Fink... 등등 여러 방법이 있었다. 그 중에서 나는 그나마 친숙해보이는 homebrew를 이용해 설치하기로 했다. 지금은 애초에 맥과 그리 친하지 않은 상태이기도 하니 최대한 친숙한 방법들을 이용해 오류가 나는 상황을 최대하 배제하려고 한다.

그렇다면 homebrew를 이용해 어떻게 설치하는가?

brew install postgresql

이러면 설치가 진행된다. 어디에서는 brew search postgres를 이용해 설치할 수 있는 버전을 확인하라고 했는데, 나는 최신 버전을 설치하려고 했기에 그냥 그대로 진행했다.

brew services start postgres

postgresql을 시작하려면 위와 같은 명령어를 입력하면 된다.

brew services stop postgres

종료는 다음과 같은 명령어이다.

https://www.postgresql.org/docs/14/tutorial-createdb.html

공식 문서를 보고 database를 만들어보고자 했다. testdb란 이름의 db를 만들어보고자 했다.

createdb testdb

엔터를 치니까 아무런 반응도 없는데, 반응이 없으면 성공이라고 한다.

dropdb testdb

이건 db를 삭제하는 명령어.
이제 db로 들어가려면 psql 명령어를 이용하나 보다.

psql testdb

해당 명령어를 쳤는데, 이번에도 아무런 반응이 없다. 아까처럼 성공인가? 싶은데, 이번에는 성공했을시 앞부분이 testdb=> 되어야하나 보다. 그런데 나는 아무런 반응이 없다. 똑같은 postgres-#이다... 바로 몇줄 아래에 해당 사항에 대한 이야기가 나와있었다. 프롬프트가 해당 DB명으로 바뀌어있는 경우는 해당 계정이 database의 superuser임을 뜻하는 것이라고 한다. 오호... 버전을 찾는 명령어 같은 것도 잘 먹는 걸 보니 성공한 것 같다.

테이블 생성

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- low temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            date
);

테이블 생성은 다음과 같이 하면 되는 것 같다. 공식문서에 있는 내용을 그대로 긁어왔다.

데이터 삽입

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

이렇게 입력하니 다음과 같은 반환값이 돌아왔다.

INSERT 0 1

일단 공식문서에 설명은 없는 것 같은데(내가 지나쳤을 확률이 클 것 같긴 하지만) 나중에 찾아봐야할 것 같다.

데이터 조회

select * from weather;

weather 테이블에 있는 모든 데이터를 조회해보도록 하였다.

     city      | temp_lo | temp_hi | prcp |    date    
---------------+---------+---------+------+------------
 San Francisco |      46 |      50 | 0.25 | 1994-11-27
(1 row)

당연히 한줄만 나온다. 하나만 넣었으니깐.

데이터 수정

update weather
set temp_lo = 89
where city = 'San Francisco';

다음과 같이 입력하니 UPDATE 1이라는 값이 반환되고, 다시 weather 테이블을 조회해보니,

     city      | temp_lo | temp_hi | prcp |    date    
---------------+---------+---------+------+------------
 San Francisco |      89 |      50 | 0.25 | 1994-11-27
(1 row)

89로 변경된 것을 확인하였다.

데이터 삭제

delete from weather where city = 'San Francisco';

데이터 삭제. 반환값은 DELETE 1이고, 다시 조회해보니 데이터가 말끔히 사라진 것을 확인할 수 있었다.

 city | temp_lo | temp_hi | prcp | date 
------+---------+---------+------+------
(0 rows)

일단 SQL 같은 경우는 기존에 사용하던 것들과 크게 다를 것이 없는 것 같다. 이걸 좀 더 다뤄보다가 flask 서버와 연결 해보려고 한다.

profile
생각 없는 개발자

0개의 댓글