PostgreSQL이란?
PostgreSQL
은 전세계에서 널리 사용되는 데이터베이스중 하나이다.Web System
에서 사용되는 데이터베이스 시스템 중 하나이다.설치 방법
brew install postgresql
설치가 완료되면 아래 명령을 실행
psql --version
pgAdmin 설치
PostgreSQL GUI S/W
인 pgAdmin
을 설치한다.
아래의 postgre
공식사이트에서 설치할 수 있다.
https://www.postgresql.org/ftp/
여기서
"pgAdmin"→ "pgAdmin4"→ "최신 버전"→ 해당되는OS
를 설치한다.
Database와 Table 만들기
터미널을 열어서 다음 명령으로 postgreSQL에 접속한다.
psql postgres
이후에 아래의 명령을 실행하여 데이터베이스를 생성한다.
create database nodedb;
메타 명령 \l
을 통해 데이터베이스 목록 조회시 nodedb
가 존재할 것이다.
이제 다음 명령으로 nodedb
로 이동한다.
\c nodedb
이제 테이블을 만들것이다.
Schema
를 만들지 않으므로 기본 public Schema
에 만들것이다.
아래의 명령을 실행하여 테이블을 만든다.
create table member (id integer primary key, name varchar(20));
메타명령 \dt
를 실행하여 member table
이 있는지 확인한다.
pgAdmin을 Database에 연결
방금 설치했던 pgAdmin
을 실행시킨다.
왼쪽 메뉴의Server
에서 마우스 우클릭 후 Create
→Server ...
를 클릭시 위와 같은 메뉴가 표시된다.
Name
란에 local
이라고 입력 후 Save
버튼을 클릭한다.
여기에다가 다음과 같이 입력하면 된다.
Host
: 127.0.0.1
Port
: 5432
Maintenance database
: nodedb
username
: 슈퍼유저명
password
: 사용자비밀번호
Save Password
: 체크
그렇다면 Servers
에 local
서버가 만들어져 있을 것이다.
그렇다면 위 그림과 같이 nodedb
의 Tables
에 생성한 member
테이블도 포함되어 있는것을 확인할 수 있다.
member
에서 우클릭을 하여 View/Edit data
→ All Rows
를 클릭하면 테이블내의 컬럼이 표시된다. 하지만 아직 데이터가 들어있지 않으므로 비어있는 상태이다.
Node.js를 Database에 연결
아무 디렉토리에 node-psql-test
폴더를 만들고 그 안에 psql.js
파일을 생성한다.
그리고 node.js
에서 PostgreSQL
을 사용할 수 있도록 node-postgres
라는 라이브러리를 설치해야 한다.
npm install pg
설치가 완료되면 psql.js
를 열고 다음과 같이 작성한다.
const { Client } = require("pg");
const client = new Client({
user: "사용자명",
host: "127.0.0.1",
database: "nodedb",
password: "사용자비밀번호",
port: 5432,
});
client.connect();
client.query("SELECT NOW()", (err, res) => {
console.log(err, res);
client.end();
});
코드를 자세히 보자.
먼저 postgreSQL모듈을 가져오는 부분을 보자
const { Client } = require("pg");
그리고 Client() 인스턴스를 작성하는데, 초기 설정으로 옵션에 데이터베이스에 접속하기 위한 정보를 작성한다.
const client = new Client({
user: "사용자명",
host: "127.0.0.1",
database: "nodedb",
password: "사용자비밀번호",
port: 5432,
});
그리고 .connect()
로 데이터베이스에 접속한다.
client.connect();
node
에서 PostgreSQL
에 쿼리조작을 할 때는 .query()
를 사용한다.
다음은 SELECT NOW()
를 실행해 현재 시간을 timestamp형(날짜와 시각을 나타내는 데이터형)으로 얻는다.
그리고 그 결과를 console.log로 출력한다.
client.query("SELECT NOW()", (err, res) => {
console.log(err, res);
client.end();
});
이렇게 파일을 저장한뒤에 node psql.js
로 실행해본다.
rows
안에 현재의 timespace
가 보이는것을 확인할 수 있다.
이제 노드에서 데이터베이스에 연결할 수 있다.
데이터 등록, 검색, 삭제
이제, node
로부터 PostgreSQL
에 데이터를 등록, 검색, 삭제 하는 쿼리조작을 하려고 한다.
psql.js
에 다음과 같이 작성해보자.
const { Client } = require("pg");
const client = new Client({
user: "사용자명",
host: "127.0.0.1",
database: "nodedb",
password: "사용자비밀번호",
port: 5432,
});
client.connect();
const query = {
text: "INSERT INTO member VALUES ($1, $2)",
values: [1, "홍길동"],
};
client
.query(query)
.then((res) => {
console.log(res);
client.end();
})
.catch((e) => console.error(e.stack));
const query = {
text: "INSERT INTO member VALUES ($1, $2)",
values: [1, "홍길동"],
};
일단 query()
에 인자로써 건네주는 SQL커맨드와 건네주는 값을 변수 query에 넣어둔다.
나의 경우에는 [1, "홍길동"]
이라는 데이터를 등록하였다.
client
.query(query)
.then((res) => {
console.log(res);
client.end();
})
.catch((e) => console.error(e.stack));
그리고 query()
의 인자에 이 데이터를 건네준다.
또한 console.log
에서 이것에 대한 응답 내용을 출력하도록 한다.
이제 node psql.js
를 실행해보자.
실행해보면 이러한 결과가 나올것이다.
insert
에는 성공한 것으로 보이나 정말 성공하였는지 확인해보자.
pgAdmin
의 nodedb
에서 Tables → Member
로 이동한 뒤 우클릭하여 All Rows
를 표시해보자.
그렇다면 제대로 [1, 홍길동]
에 대한 데이터가 등록되어 있을 것이다.
데이터 조회
데이터를 얻는 것도 가능하다.
PostgreSQL
에서는 Select from
의 SQL커맨드를 통해 데이터를 조회할 수 있다.
psql.js
에 다음과 같이 작성해보자.
const { Client } = require("pg");
const client = new Client({
user: "사용자명",
host: "127.0.0.1",
database: "nodedb",
password: "사용자비밀번호",
port: 5432,
});
client.connect();
const query = {
text: "SELECT * FROM member",
};
client
.query(query)
.then((res) => {
console.log(res.rows[0]);
client.end();
})
.catch((e) => console.error(e.stack));
실행해보면 아래와 같은 조회한 회원의 데이터가 표시된다.
데이터 삭제
마지막으로 방금 등록한 데이터를 삭제해보자.
PostgreSQL
에서의 쿼리문은 delete from
이다.
psql.js
에 다음과 같이 작성해보자.
const { Client } = require("pg");
const client = new Client({
user: "사용자명",
host: "127.0.0.1",
database: "nodedb",
password: "사용자비밀번호",
port: 5432,
});
client.connect();
const query = {
text: "DELETE FROM member WHERE id = $1",
values: [1],
};
client
.query(query)
.then((res) => {
console.log(res);
client.end();
})
.catch((e) => console.error(e.stack));
실행 후 응답을 보면 성공한 것으로 보인다.
pgAdmin
에서 확인해보아도, 제대로 [1, "홍길동"]
의 데이터가 삭제되었다는 것을 알 수 있다.
📝 요약
Node.js
에서 PostgreSQL
에 연결하여 쿼리작업을 수행하는것을 연습해 보았다.GET
, POST
를 수행하는 기능을 구현할 수 있을 것이다.출처
2024.04.30 기준으로
소주제 : 설치방법 에서 "brew install postgresql" 후
pgAdmin4 로 연결 시도 시 바로 진행되지 않을 수 있습니다. (제가 경험한 버전은 postgresql@14 였습니다.)
이때 "brew services start postgresql"
진행해보시면 되겠습니다.
brew 로 설치 후 summary 부분에 설명이 적혀있고, 버전마다 달라질 수 있습니다.