0
0

More than 1 year has passed since last update.

SQL・Databese を基本からまとめてみた【PostgreSQL入門】

Last updated at Posted at 2023-03-06

PostgreSQLとは?

PostgreSQL
 PostgreSQL(ポストグレスキューエル)とはオープンソースのリレーショナルデータベース管理システム(RDBMS)のデータ管理システムのこと。Linux、macOSといったUNIX系OSはもちろんのこと、Windowsにも対応している。すべてのソースは公開されており、用途を問わず無料で利用できる。RDBMS(リレーショナルデータベース管理システム)として基本的な機能を備えており、SQL言語を使ったデータの作成・編集といったデータ管理機能や、サブクエリ、トリガー、バックアップなどの障害回復機能、同時実行制御などに対応している。拡張性が高く、インデックスやデータ型などさまざまな要素のユーザー定義が可能。

環境の準備

①ターミナルで、アプリケーションを作成する。

mkdir <プロジェクト名>
cd <プロジェクト名>

③ 必要なモジュールやライブラリをインストールする。

touch  <ファイル名>.js
npm init -y
npm i express nodemon pg

※ nodemon とは、コードを監視して、保存後サーバーを自動で更新してくれるツールのこと

④下記に変更する

package.json
"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
db.js
const Pool = require('pg').Pool;

const pool = new Pool({
  user: 'postgres',
  host: 'localhost',
  database: 'user',
  password: '5w7aybjz',
  port: 5432,
});

module.exports = pool;
server.js
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を使って、サーバーを自動で更新する方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0