PostgreSQLとは?
PostgreSQL
PostgreSQL(ポストグレスキューエル)とはオープンソースのリレーショナルデータベース管理システム(RDBMS)のデータ管理システムのこと。Linux、macOSといったUNIX系OSはもちろんのこと、Windowsにも対応している。すべてのソースは公開されており、用途を問わず無料で利用できる。RDBMS(リレーショナルデータベース管理システム)として基本的な機能を備えており、SQL言語を使ったデータの作成・編集といったデータ管理機能や、サブクエリ、トリガー、バックアップなどの障害回復機能、同時実行制御などに対応している。拡張性が高く、インデックスやデータ型などさまざまな要素のユーザー定義が可能。
環境の準備
①ターミナルで、アプリケーションを作成する。
mkdir <プロジェクト名>
cd <プロジェクト名>
③ 必要なモジュールやライブラリをインストールする。
touch <ファイル名>.js
npm init -y
npm i express nodemon pg
※ nodemon とは、コードを監視して、保存後サーバーを自動で更新してくれるツールのこと
④下記に変更する
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon server.js"
},
⑤ postgresqlとインストールする
brew install postgresql
//インストールが完了したら、起動して実行する必要がある
brew services start postgresql
//サービスを停止したい場合
brew services stop postgresql
SQL shellを立ち上げる
①何も入力せず、Enterを押す
Server [localhost]:
Database [postgres]:
Port [5433]:
Username [postgres]:
②postgresのパスワードを入力する
Password for user postgres:
③Databaseを作成する
postgres=# CREATE DATABASE users;
③Tableを作成する
postgres=# ¥c users
postgres=# CREATE TABLE users(
④フィールドを作成する
postgres(# ID serial primary key,
postgres(# name varchar(255),
postgres(# email varchar(255),
postgres(# age int);
⑤SQL文を書く
users-# insert into users(name, email, age)
users-# values ("shun", "shin@gmail.com", 23),("shin", "shun@gmail.com", 33);
ファイル構成
├── db.js
├── package-lock.json
├── package.json
└── server.js
const Pool = require('pg').Pool;
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'user',
password: '5w7aybjz',
port: 5432,
});
module.exports = pool;
const express = require('express');
const app = express();
const PORT = 3000;
const pool = require('/db');
//APIを作成
app.use(express.json());
app.get('/', (req, res) => {
res.send('Hello Express');
});
//User情報を全て取得する
app.get('/users', (req, res) => {
pool.query('SELECT * FROM users', (error, results) => {
if (error) throw error;
return res.status(200).json(results.row);
});
});
//特定のUserを取得する
app.get('/users/:id', (req, res) => {
const id = req.params.id;
pool.query('SELECT * FROM users WHERE id = $1', [id], (error, results) => {
if (error) throw error;
return res.status(200).json(results.row);
});
});
//userを追加する
app.post('/users', (req, res) => {
const { name, email, age } = req.body;
//userが既に存在しているかどうか確認
pool.query(
'SELECT s FROM users s WHERE s.email = $1',
[email],
(error, results) => {
if (results.rows.length) {
res.send('既にユーザーが存在しています');
}
pool.query(
'INSERT INTO users(name, email, age) values($1,$2,$3)',
[name, email, age],
(error, results) => {
if (error) throw error;
res.status(201).send('ユーザー作成に成功しました');
}
);
}
);
});
app.listen(PORT, () => {
console.log('server is running on PORT' + PORT);
});
参考サイト
【PostgreSQL入門】初心者OK!PostgreSQLでデータベースの基礎を学んでみよう【APIの構築まで】
PostgreSQLとは?特徴や最新バージョンの機能を紹介!
【Node.js】nodemonを使って、サーバーを自動で更新する方法