PostgreSQLでDBとテーブルの作成と削除を行う

Sinatraで作成したメモアプリのDB化にあたりまずはPostgreSQLでのDBとテーブルの作成と削除する方法について調べた。

結論

psql でログインした状態で下記コマンドでDB/テーブルの作成/削除が行える。

  • DB作成: CREATE DATABASE DB名;
  • DB削除: DROP DATABASE DB名;
  • テーブル作成: CREATE TABLE テーブル名 (カラム名 データ型 制約);
  • テーブル削除: DROP TABLE テーブル名;

PostgreSQLの概念図

DBとテーブルの関係性が分からなくなったので再確認。 とてもわかり易いPostgreSQLの概念図を見つけたので画像引用させて頂きました。

PostgreSQLの概念図(データベースクラスタ/データベース/スキーマ/テーブル) - Qiita

  • クラスタ: PC、サーバ内のデータの保存領域。この中にデータベース、ロールを作成する。
  • データベース: 区分けされたデータの保存領域。アプリケーションで使用するデータはここから取得する。
  • テーブル: 保存する値を管理する表のようなもの。イメージはスプレッドシート

DBの作成と削除

例) test DBの作成と削除を行う。

psql でスーパーユーザkarlley にログインした状態でコマンドを実行する。

# スーパユーザkarlley でデフォルトDBのkarlley にログイン
$ psql -U karlley -d karlley
psql (14.4)
Type "help" for help.

# 作成
karlley=# CREATE DATABASE test;
CREATE DATABASE
karlley=# \l
                           List of databases
   Name    |  Owner  | Encoding | Collate | Ctype |  Access privileges
-----------+---------+----------+---------+-------+---------------------
 karlley   | karlley | UTF8     | C       | C     |
 postgres  | karlley | UTF8     | C       | C     |
 template0 | karlley | UTF8     | C       | C     | =c/karlley         +
           |         |          |         |       | karlley=CTc/karlley
 template1 | karlley | UTF8     | C       | C     | =c/karlley         +
           |         |          |         |       | karlley=CTc/karlley
 test      | karlley | UTF8     | C       | C     |

# 削除
karlley=# DROP DATABASE test;
DROP DATABASE
karlley=# \l
                           List of databases
   Name    |  Owner  | Encoding | Collate | Ctype |  Access privileges
-----------+---------+----------+---------+-------+---------------------
 karlley   | karlley | UTF8     | C       | C     |
 postgres  | karlley | UTF8     | C       | C     |
 template0 | karlley | UTF8     | C       | C     | =c/karlley         +
           |         |          |         |       | karlley=CTc/karlley
 template1 | karlley | UTF8     | C       | C     | =c/karlley         +
           |         |          |         |       | karlley=CTc/karlley
(4 rows)

DB作成時にオーナーを指定したい場合はCREATE DATABASE DB名 owner=オーナー名 でオーナーを指定できる。

テーブルの作成と削除

例) test DB内に下記の構成のmemos テーブルの作成と削除を行う。

カラム名 データ型 制約
id CHAR(8) PRIMARY KEY
title TEXT NOT NULL
content TEXT なし

psql でスーパーユーザkarlley にログインした状態でコマンドを実行する。

# スーパユーザkarlley で作成したtest DBにログイン
$ psql (14.4)
Type "help" for help.

# テーブル作成
test=# CREATE TABLE memos(id CHAR(8) NOT NULL, titile TEXT NOT NULL, content TEXT, PRIMARY KEY (id));
CREATE TABLE

# テーブル作成を確認
test=# \d
        List of relations
 Schema | Name  | Type  |  Owner
--------+-------+-------+---------
 public | memos | table | karlley
(1 row)

# カラム作成を確認
test=# \d memos
 id      | character(8) |           | not null |
 titile  | text         |           | not null |
 content | text         |           |          |

# テーブル削除
test=# DROP TABLE memos;
DROP TABLE

# テーブル削除を確認
test=# \d memos
Did not find any relation named "memos".

感想

SQLやデータ型について殆ど覚えていなかった。 特にデータ型については未だにどのデータ型を指定すれば良いか全然分からん状態なのできちんと調べる必要がありそうです。

参照

[macOS High Sierra][Homebrew] PostgreSQL のインストールからDB作成まで - Qiita

テーブルの作成(CREATE TABLE) | PostgreSQLではじめるDB入門

テーブルの削除(DROP TABLE) | PostgreSQLではじめるDB入門