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