さて、急遽PostgreSQLを使う羽目になったので、ゼロからPostgreSQLの使い方を調べつつ自分のメモとしても残しておこうと思います。
DML(Data Manipulation Language)はMySqlやらMarinaDBやら触ってるので、多分PostgreSQLさんはクセがないと言われているのでなんとかなるかなと思いつつ、DDL(Data Definition Language) とDCL(Data Control Language)は、はてさてとなったので、調べつつ一からやっていきます。
興味ない方も多いかと思いますが、そこら辺はメモだと思ってご容赦ください。
PostgreSQLって何?
一応、一般的なご紹介だけしておきます。
- mysql と人気を二分する、OSS-DB の一つ
- 方言的SQLは少ないらしい(自分も今から勉強なので、差分があれば差分リストもどっかで作ります)
- トリガとか全文検索に強そう(メリット)
- 3rd party製品の対応がMySQLとかと比較して薄い(デメリット)
機能比較は自分でやってなくて(というかまだできるレベルにいないので)、以下のサイトを参考にみていました。結構古い記事(2009年)なので、どっかで更新されてる比較表も探さなければとは思います。
docker対応
ちゃんとDocker hubにもあります。ここら辺は安心。まぁOSS-DBとしてメジャーなので流石にあるでしょうがw
その他PostgreSQLの基本
・クライアント-サーバ方式
・ロールっていう概念でユーザ管理
・pg_ctlでバックエンドサーバを動かす(sysctlにenable可能)
・psqlでSQL関係操作(login〜)、ショートカットコマンドが多い
・クライアントツールとしてはpgadmin( https://www.pgadmin.org/ )などがある
インストール(MacOS)
homebrewを使ってインストールしていきます。とりあえず最新版をインストールする場合です。
brew install postgresql
バージョンの指定をしたい場合は以下。homebrewのupdateしてなくて新しいのが入ってない人は、先にupdateしてください。
brew search postgresql
brew install <バージョン>
pathを通す
bashを使っているかzshを使っているかで、いれる先(bash_profileかzprofileか)は違うにせよ、コマンドは基本以下。
viを使って編集します。vimのかたはvimでやってください。
vi ~/.zprofile
#postgresql
export PATH="/usr/local/opt/postgresql/bin:$PATH
export PGDATA=/usr/local/var/postgres
PGDATAはデフォルトのデータディレクトリを環境変数で指定する場合に利用。
その他環境変数利用可能な要素は以下。
環境変数 | 内容 |
PGDATA | デフォルトのデータディレクトリ |
PGCLIENTENCODING | クライアントで使用される文字符号化方式のデフォルト。 (クライアントは個別に変変更可能。) 設定ファイルでも設定可。 |
PGPORT | デフォルトのポート番号(一般的にはcnfファイル内で設定) |
(バックエンド)サーバを立ち上げる
サーバの立ち上げは以下。
pg_ctl start
こっちでも可能。
brew services start postgresql
立ち上げが成功すると以下のようなコメント。
2020-11-13 16:59:41.678 JST [80588] LOG: listening on IPv6 address "::1", port 5432 2020-11-13 16:59:41.678 JST [80588] LOG: listening on IPv4 address "127.0.0.1", port 5432 2020-11-13 16:59:41.679 JST [80588] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2020-11-13 16:59:41.689 JST [80589] LOG: database system was shut down at 2020-11-13 16:09:58 JST 2020-11-13 16:59:41.704 JST [80588] LOG: database system is ready to accept connections done server started
サーバの状態を確認する
pg_ctl status
サーバが立ち上がっているか否かの返答がくる。立ち上がっている場合、以下のようにPIDとセットで返ってくる
pg_ctl: server is running (PID: 80588)
サーバにアクセスする
アクセスする方法は以下。
psql [-h localhost] [-p 5432] -U role_name -d db_name
ローカルサーバからのアクセスの場合、-h localhostは不要。-pもport指定のため、標準で良ければ指定不要。
あと、ユーザネームを指定しないことも可能。ということで、最小は以下。
psql db_name
まとめ
とりあえずDBへ接続はできました。次はシンプルなテーブルの取得や、ちょっと手間取った(というか、ワードに戸惑った)roleに関する設定などをやってきます。
さて、いつになったらrailsで使えるレベルまで持っていけるかなぁ。