1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

データベース(PostgreSQL)

Last updated at Posted at 2023-04-09

PostgreSQLとは

  • RDBMS(リレーショナルデータベース管理システム)
スクリーンショット 2022-08-26 17 33 48

 ※RDBとは、テーブル(エクセルみたいな)という形でデータを返します。
  複数のテーブルを関連づけることができる

ローカルからPostgreSQLに接続する方法

$ psql -h localhost -p 5432 -U postgres -d postgres

ローカルに戻るコマンド

postgres=# \q

途中で終了する場合はセミコロンで終了できる。

postgres=# k
postgres-# ;
ERROR:  syntax error at or near "k"
LINE 1: k
        ^
postgres=# 

テーブル作成

$ create table posts (title varchar(255), body text);

postgres=# create table posts (title varchar(255), body text);
CREATE TABLE

$ ¥dt
※テーブル一覧

postgres=# \dt
         List of relations
 Schema | Name  | Type  |  Owner   
--------+-------+-------+----------
 public | posts | table | postgres
(1 row)

$ ¥d posts
※テーブルのカラムを表示する

postgres=# \d posts
                       Table "public.posts"
 Column |          Type          | Collation | Nullable | Default 
--------+------------------------+-----------+----------+---------
 title  | character varying(255) |           |          | 
 body   | text                   |           |          | 

$ alter table posts rename to myposts;
※テーブル名前変更

postgres=# alter table posts rename to myposts;
ALTER TABLE

$ drop table myposts;
※テーブル削除

postgres=# drop table myposts;
DROP TABLE

外部ファイルを使用する方法

postgres=# \i commands.sql
※ターミナル開いてcommands.sqlファイルを作成して、ファイルの中身に
create table posts (title varchar(255), body text);
を記載して、上記コマンドを実行するとテーブルが作成される

データの型

  • 数値: integer(int),real(実数),serial(連番)
  • 文字: char(5)-固定文字の場合, varchar(255)-上限付きの可変長,
    ※読み方、char = キャラ
  • 真偽: boolean TRUE FALSE  t  f
  • 日付: date(日付), time(時間),timestamp(両方)
     

フィールドに制約をつけてみよう

  • 制約
    • not null(入力必須のものにつける)
    • unique(重複した値を許さない、同じEメールアドレスを許さない)
    • check(内容をチェックする)
    • default
    • primary key,(not null, unique)(一意に決めるための主キー)
      ※テーブルにつき1つだけしか設定できない
create table posts(
    id serial primary key,(一意に決まるもの)
    title varchar(255) not null,(タイトルが体と困る)
    body text check(length(body) > 5),(五文字以上)
    is_draft boolean default TRUE,
    created timestamp default 'now',(現在時刻に設定)
);

insert文を使ってみよう

insert into posts (title, body) values ('title', 'body1111');

postgres=# insert into posts (title, body) values ('title', 'body1111');
INSERT 0 1

select * from posts;
※全てのレコードを見ることができる

postgres=# select * from posts;
 title |   body
-------+----------
 title | body1111
(1 row)

select文を使ってみよう

値を追加

postgres=# create table users (
    id serial primary key,
    name varchar(255),
    score real,
    team varchar(255)
);
insert into users (name, score, team) values
('aa', 5.5, 'red'),
('ss', 8.3, 'blue'),
('dd', 2.2, 'blue'),
('ff', 5.0, 'green'),
('gg', 4.6, 'red'),
('hh', 4.7, 'green');
CREATE TABLE
postgres-# \dt
         List of relations
 Schema | Name  | Type  |  Owner
--------+-------+-------+----------
 public | posts | table | postgres
 public | users | table | postgres
(2 rows)

$ \d users
フィールドが設定されていることを確認
$ \x、拡張表示はonです。表示がいつもと違う形に なる、\x2回入力すると戻る

postgres-# \d users
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 name   | character varying(255) |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ select * from users;
※全てのフィールドを表示する

postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(6 rows)

$ select name, score from users;
※全てのフィールドを表示する

postgres=# select name, score from users;
 name | score
------+-------
 aa   |   5.5
 ss   |   8.3
 dd   |   2.2
 ff   |     5
 gg   |   4.6
 hh   |   4.7
(6 rows)

where句を使ってみよう

$ select * from users where score > 4.0;
scoreが4以上のものを抽出する

postgres=# select * from users where score > 4.0;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(5 rows)

$ select * from users where score = 5.0;
※scoreが5のものを抽出する
$ select * from users where score != 5.0;
※scoreが5以外のものを抽出する
など、

$ select * from users where name = 'ff';
文字列に関して抽出する

postgres=# select * from users where name = 'ff'
postgres-# ;
 id | name | score | team
----+------+-------+-------
  4 | ff   |     5 | green
(1 row)

$ select * from users where name like '%a';
%i = 最後にaがつくものを抽出する

postgres=# select * from users where name like '%a'
postgres-# ;
 id | name | score | team
----+------+-------+------
  1 | aa   |   5.5 | red
(1 row)

$ select * from users where name like 'h_h';
※ h_h = 最初と最後の文字を指定して抽出が可能

order by、limit、offsetを使おう

$ select * from users order by score;
フィールドごとの並び替え(小さい順)

postgres=# select * from users order by score;
 id | name | score | team
----+------+-------+-------
  3 | dd   |   2.2 | blue
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
  4 | ff   |     5 | green
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
(6 rows)

$ select * from users order by score desc;
scoreごとの並び替え(大きい順)

postgres=# select * from users order by score desc;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  1 | aa   |   5.5 | red
  4 | ff   |     5 | green
  6 | hh   |   4.7 | green
  5 | gg   |   4.6 | red
  3 | dd   |   2.2 | blue
(6 rows)

$ select * from users order by team;
チームごと並び替え(アルファベット順)

postgres=# select * from users order by team
postgres-# ;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  6 | hh   |   4.7 | green
  1 | aa   |   5.5 | red
  5 | gg   |   4.6 | red
(6 rows)

$ select * from users order by team, score desc;
チーム内でscoreが 大きい順に並べたい

postgres=# select * from users order by team, score desc;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  6 | hh   |   4.7 | green
  1 | aa   |   5.5 | red
  5 | gg   |   4.6 | red
(6 rows)

件数を制限したい場合,limit

$ select * from users limit 3;
※ 最初の三件だけを表示してくれる

postgres=# select * from users limit 3;
 id | name | score | team
----+------+-------+------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
(3 rows)

$ select * from users limit 3 offset 3;
※ 項目の4から表示させる場合

postgres=# select * from users limit 3 offset 3;
 id | name | score | team
----+------+-------+-------
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(3 rows)

$ select * from users order by score desc limit 3;
ハイスコアランキングで3人だけ表示させたい

postgres=# select * from users order by score desc limit 3;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  1 | aa   |   5.5 | red
  4 | ff   |     5 | green
(3 rows)

レコードを集計してみよう

$ select * from users;
※全てのフィールドを表示する

postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(6 rows)

$ select count(*) from users;
レコード件数が何件あるか知りたい場合は

postgres=# select count(*) from users;
 count
-------
     6
(1 row)

$ select distinct team from users;
team内で何色があるか知りたい場合は

postgres=# select distinct team from users;
 team
-------
 blue
 red
 green
(3 rows)

$ select sum(score) from users;
全体の合計を引っ張ってくる

postgres=# select sum(score) from users;
 sum
------
 30.3
(1 row)

$ select max(score) from users;
最大値を引っ張ってくる

postgres=# select max(score) from users;
 max
-----
 8.3
(1 row)

$ select avg(score) from users;
平均値を引っ張ってくる

postgres=# select avg(score) from users;
        avg
-------------------
 5.049999992052714
(1 row)

$ select team, sum(score) from users group by team;
スコアの合計値を出したいし、チームごとに出したい場合は

postgres=# select team, sum(score) from users group by team;
 team  | sum
-------+------
 blue  | 10.5
 red   | 10.1
 green |  9.7
(3 rows)

$ select team, sum(score) from users group by team having sum(score) > 10.0;
集計した後のもに対してさらに条件をつけることができる、(having)
チームスコアの合計値が10より多いものだけ知りたい場合、

postgres=# select team, sum(score) from users group by team having sum(score) > 10.0;
 team | sum
------+------
 blue | 10.5
 red  | 10.1
(2 rows)

便利な関数を使ってみよう

$ select * from users;
※全てのフィールドを表示する

postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(6 rows)

$ select name, length(name) from users;
名前の文字数を調べたい場合

postgres=# select name, length(name) from users;
 name | length
------+--------
 aa   |      2
 ss   |      2
 dd   |      2
 ff   |      2
 gg   |      2
 hh   |      2
(6 rows)

$ select concat(name, ' (', team, ')') from users;
文字列の連結
名前の後に、チームの名前を入れたいという場合、

postgres=# select concat(name, ' (', team, ')') from users;
 aa (red)
 ss (blue)
 dd (blue)
 ff (green)
 gg (red)
 hh (green)

$ select concat(name, ' (', team, ')') as namelabel from users;
ラベルを変える方法

postgres=# select concat(name, ' (', team, ')') as namelabel from users;
 aa (red)
 ss (blue)
 dd (blue)
 ff (green)
 gg (red)
 hh (green)

$ select substring(team, 1, 1) from users;
チームの1文字目しか必要なかった場合

postgres=# select substring(team, 1, 1) from users;
 r
 b
 b
 g
 r
 g

$ select *from users order by random() limit 1;
ランダムに1人抽出してくれる

postgres=# select *from users order by random() limit 1;
  4 | ff   |     5 | green

postgres=# select *from users order by random() limit 1;
  5 | gg   |   4.6 | red

postgres=# select *from users order by random() limit 1;
  4 | ff   |     5 | green

updete、deleteを使ってみよう

$ select * from users;
※全てのフィールドを表示する

postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(6 rows)

$ update users set score = 5.8 where name = 'aa';
scoreを変えたい場合
テーブル名を指定した後に、[set]として、変更したいフィールドを書いて、その後にに値を = で結びつける

postgres=# update users set score = 5.8 where name = 'aa';
UPDATE 1
postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
  1 | aa   |   5.8 | red
(6 rows)

$ update users set score = score + 1 where team = 'red';
スコアを1増やして、ただしチームがredのもに限る場合

postgres=# update users set score = score + 1 where team = 'red';
UPDATE 2
postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  6 | hh   |   4.7 | green
  5 | gg   |   5.6 | red
  1 | aa   |   6.8 | red
(6 rows)

$ update users set score = score + 1 where team = 'red' or team = 'green';
where句はandなどで条件をつなげることもできるので
 チームがredもしくはgreenの場合はスコアが1ずつあげる

postgres=# update users set score = score + 1 where team = 'red' or team = 'green';
UPDATE 4
postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     6 | green
  6 | hh   |   5.7 | green
  5 | gg   |   6.6 | red
  1 | aa   |   7.8 | red
(6 rows)

$ delete from users where score < 3.0;
スコアが3より低い人を削除したい場合

postgres=# delete from users where score < 3.0;
DELETE 1
postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  2 | ss   |   8.3 | blue
  4 | ff   |     6 | green
  6 | hh   |   5.7 | green
  5 | gg   |   6.6 | red
  1 | aa   |   7.8 | red
(5 rows)

テーブルの構造を変更してみよう

  • まずはこういった型で用意されていることを確認
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 name   | character varying(255) |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ alter table users add fullname varchar(255);
フィールドを追加する場合

postgres=# alter table users add fullname varchar(255);
ALTER TABLE
postgres=# \d users;
                                     Table "public.users"
  Column  |          Type          | Collation | Nullable |              Default
----------+------------------------+-----------+----------+-----------------------------------
 id       | integer                |           | not null | nextval('users_id_seq'::regclass)
 name     | character varying(255) |           |          |
 score    | real                   |           |          |
 team     | character varying(255) |           |          |
 fullname | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ alter table users drop fullname;
逆にフィールドを削除する場合

postgres=# alter table users drop fullname;
ALTER TABLE
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 name   | character varying(255) |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ alter table users rename name to myname;
名前をnameからmynameに変更した場合

postgres=# alter table users rename name to myname;
ALTER TABLE
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 myname | character varying(255) |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ alter table users alter myname type varchar(32);
型す、文字数を変更したい場合

postgres=# alter table users alter myname type varchar(32);
ALTER TABLE
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 myname | character varying(32)  |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

$ create index team_index on users(team);

  • teamにindexをつける方法
    • インデックスという、テーブルについている索引なのですがこれの追加、削除方法、
    • primary keyには最初からついているのですが、これがついていると検索が早くなります
    • 運用していったらteamで検索されることが多かったので、teamにインデックスをつけてみよう
postgres=# create index team_index on users(team);
CREATE INDEX
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 myname | character varying(32)  |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
    "team_index" btree (team)

$ alter table users alter myname type varchar(32);
indexを削除する場合

postgres=# drop index team_index;
DROP INDEX
postgres=# \d users;
                                    Table "public.users"
 Column |          Type          | Collation | Nullable |              Default
--------+------------------------+-----------+----------+-----------------------------------
 id     | integer                |           | not null | nextval('users_id_seq'::regclass)
 myname | character varying(32)  |           |          |
 score  | real                   |           |          |
 team   | character varying(255) |           |          |
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)

複数のテーブルを扱ってみよう

複数テーブル作成

postgres=# create table users (
    id serial primary key,
    name varchar(255),
    score real,
    team varchar(255)
);
insert into users (name, score, team) values
('aa', 5.5, 'red'),
('ss', 8.3, 'blue'),
('dd', 2.2, 'blue'),
('ff', 5.0, 'green'),
('gg', 4.6, 'red'),
('hh', 4.7, 'green');

create table posts (
    id serial primary key,
    user_id int not null,
    title varchar(255) not null,
    body text not null
);
insert into posts (user_id, title, body) values
('1', 'title1', 'body1'),
('2', 'title2', 'body2'),
('3', 'title3', 'body3'),
('4', 'title4', 'body4'),
('5', 'title5', 'body5'),
('6', 'title6', 'body6');

$ \d
作成されたことを確認

postgres=# \d
              List of relations
 Schema |     Name     |   Type   |  Owner
--------+--------------+----------+----------
 public | posts        | table    | postgres
 public | posts_id_seq | sequence | postgres
 public | users        | table    | postgres
 public | users_id_seq | sequence | postgres
(4 rows)

postgres=# select * from users;
 id | name | score | team
----+------+-------+-------
  1 | aa   |   5.5 | red
  2 | ss   |   8.3 | blue
  3 | dd   |   2.2 | blue
  4 | ff   |     5 | green
  5 | gg   |   4.6 | red
  6 | hh   |   4.7 | green
(6 rows)

postgres=# select * from posts;
 id | user_id | title  | body
----+---------+--------+-------
  1 |       1 | title1 | body1
  2 |       2 | title2 | body2
  3 |       3 | title3 | body3
  4 |       4 | title4 | body4
  5 |       5 | title5 | body5
  6 |       6 | title6 | body6
(6 rows)

$ select users.name, posts.title from users, posts where users.id = posts.user_id;

  • 誰がどの記事を書いたか引っ張ってくる
    • 複数のテーブルから引っ張ってくるには、テーブル名とフィールド名を .(ドット)で繋いであげればOKです。
    • 結び付きを指定してあげないといけないので,whereをつけてuser.idとposts.user_idが一緒
postgres=# select users.name, posts.title from users, posts where users.id = posts.user_id;
 name | title
------+--------
 aa   | title1
 ss   | title2
 dd   | title3
 ff   | title4
 gg   | title5
 hh   | title6
(6 rows)

$ select u.name, p.title from users u, posts p where u.id = p.user_id;
user = u, posts = p,省力する書き方

postgres=# select u.name, p.title from users u, posts p where u.id = p.user_id;
 name | title
------+--------
 aa   | title1
 ss   | title2
 dd   | title3
 ff   | title4
 gg   | title5
 hh   | title6
(6 rows)

$ select u.name, p.title from users u, posts p where u.id = p.user_id and u.id=1

  • ユーザーごとの記事一覧ページ作成
    • andでuserのidが1,つまり{aa}君のものしか知りたくないという場合は、このような条件句を与えること
postgres=# select u.name, p.title from users u, posts p where u.id = p.user_id and u.id=1;
 name | title
------+--------
 aa   | title1
(1 row)

viewを使ってみよう

$ create view aa_posts as (さっきのの長い文)

  • 長文をviewとして、簡単に出せるようにする
postgres=# create view aa_posts as
postgres-# select u.name, p.title from users u, posts p where u.id = p.user_id and u.id=1;
CREATE VIEW
postgres=# \dv
          List of relations
 Schema |   Name   | Type |  Owner
--------+----------+------+----------
 public | aa_posts | view | postgres
(1 row)

$ select * from aa_posts;

  • viewで作成したものを出す方法
postgres=# select * from aa_posts;
 name | title
------+--------
 aa   | title1
(1 row)

$ drop view aa_post;

  • viewを削除する場合
postgres=# drop view aa_posts;
DROP VIEW
postgres=# \dv
Did not find any relations.

トランザクジョンを使ってみよう

  • 複数の処理を必ずまとめて行う処理のこと

$ begin;

  • 途中に変な処理がいってこない、不整合が起きないための仕組み
    • トランザクショの開始には[begin]として、その後に処理をいくつか書いていく
postgres=# begin;
BEGIN
postgres=*# update users set score = score -1.0 where name = 'aa';
UPDATE 1
postgres=*# update users set score = score +1.0 where name = 'ss';
UPDATE 1
postgres=*# commit;
COMMIT

$ rollback;

  • 今までの変更をまとめて取り消される
postgres=# begin;
BEGIN
postgres=*# update users set score = score -1.0 where name = 'aa';
UPDATE 1
postgres=*# update users set score = score +1.0 where name = 'ss';
UPDATE 1
postgres=*# rollback;
ROLLBACK



1からnpmで立ち上げ

・npm init -y
パッケージ.jsを初期化して使用していく

・npm i express nodemon pg

・npm start

server.jsファイル作成

const express = require("express");
const app = express();
const PORT = 5000;

app.listen(PORT, () => {
    console.log("server is runing on PORT" + PORT);
});

API作成

const express = require("express");
const app = express();
const PORT = 5000;

app.get("/", (req, res) => {
    res.send("Hello Express");
});

app.listen(PORT, () => {
    console.log("server is runing on PORT" + PORT);
});

※reg=リクエスト
※res=レスポンス

http://localhost:5000/
に接続できか確認

PostgreSQLインストール

データベース作成

postgres=# CREATE DATABASE users;
※作成したら /lでデータベース一覧表示、2個目の記事参照

## テーブルクリア
postgres=# ¥l cls

## テーブル作成
postgres=# ¥c users

### usersテーブル作成
users=# CREATE TABLE users (

## フィールド作成
users(# ID serial primary key,
users(# name varchar(255),
users(# email varchar(255),
users(# age int);
※serial=連番
※primary key=主キー(ユーザーを代表する番号)
※varchar(255)=255文字以内(文字列)
※int=整数値

# テーブル確認
users(# ¥dt
スクリーンショット 2022-08-26 17 33 48

Mysqlを使用してデータ挿入(SQL文)

### usersテーブル中身作成
users=# insert into users (name, email, age)
※insert=挿入

users-# values ('shincode', 'shinncode@gmail.com', 25), ('testUser', 'test@gmail.com', 34);

## 作成した情報を出力する方法
users=# select * from users;
※ *=全て
スクリーンショット 2022-08-26 17 33 48

VScodeから作成したデータを取り出す、サーバと連携してどのように出力するのか

db.js作成

const Pool = require("pg").Pool;

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

module.exports = pool;

server.js追加

const express = require("express");
const app = express();
const PORT = 5000;

//jsonを使用する場合は、ミドルウェアの設定を行う必要がある
app.use(express.json());

app.get("/", (req, res) => {
    res.send("Hello Express");
});

//ユーザー情報を全て取得する
app.get("/users", (req, res) => {
    pool.query("SELECT * FROM users", (error, results) => {
        if (error) throw error;
        return res.status(200).json(results.rows);
    });
});

app.listen(PORT, () => {
    console.log("server is runing on PORT" + PORT);
});
1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?