業務で使うことになるので、勉強ついでのメモ。
postgreSQL の場合は検索すると公式サイトっぽいものがでてくきます。実際には日本PostgreSQLユーザ会となっているので、普及支援のサイトのようですね。
いつか時間のある時に読もうと思って1ヶ月くらい経つ気がする。。
日本PostgreSQLユーザ会のページは以下
https://www.postgresql.jp/
1 環境
- AWS Cloud9(Amazon Linux)
- Postgres 9.6
コマンド一覧
起動等
sudo /etc/init.d/postgresql96 start
Start以外のコマンドは以下
Usage: /etc/init.d/postgresql96 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb|upgrade}
接続
psql -U postgres
postgres というユーザで接続。パスワードを聞かれるので入力して接続ができる。
DB作成
cms というデータベースを作成する
CREATE DATABASE cms;
DB削除
DROP DATABASE cms;
DB一覧
\l
```{.line-numbers}
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
cms | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
DB選択
\c cms
テーブル作成
CREATE TABLE categories(
id SERIAL NOT NULL PRIMARY KEY,
title text
);
Mysql でいうところの Auto Increment は SERIAL で指定する。
テーブル一覧
\dt
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | categories | table | postgres
public | comments | table | postgres
public | posts | table | postgres
カラムの確認
\d categories
カラムの追加
ALTER TABLE categories ADD created_at timestamp;
カラムの削除
ALTER TABLE categories DROP created_at;
型の変換
ALTER TABLE comments ALTER COLUMN body TYPE varchar(255);
型の変換 その2
string から integer に変更する場合はエラーが出る
cms=# ALTER TABLE comments ALTER COLUMN body TYPE integer;
ERROR: column "body" cannot be cast automatically to type integer
HINT: You might need to specify "USING body::integer".
変更したい場合はエラー文通りいれてコマンド実行する。さすがにこのテーブルに限ってはないけど、あくまで例なので。
ALTER TABLE comments ALTER COLUMN body TYPE integer USING body::integer;
まとめ
Mysql と PostgreSQL だと少しだけ違いがあるというのが逆に覚えにくいは自分だけでしょうか。。ただなんとなくMysqlよりかはDB選択とかのコマンドは短くはなってるので覚えれば早そうですね。
まだ中間テーブルやインデックスなどは使っていないため載せていませんが今後載せていく予定です。
コメント