OSS-DB 学習メモその3【標準付属ツールについて】

# はじめに
今回はPostgreSQLの標準付属ツールについて記事を書いていきます。
その中の、pg_ctl、createuser、dropuser、createdb、dropdb、psqlについてまとめました。

# pg_ctlコマンドとは
「pg_ctl」は、PostgreSQLの管理コマンドの1つであり、PostgreSQLサーバーの起動、停止、再起動、再読み込み、状態の確認、および強制終了などを行うために使用されます。
具体的には、「pg_ctl initdb」「pg_ctl start」「pg_ctl stop」「pg_ctl restart」「pg_ctl reload」「pg_ctl status」「pg_ctl kill」の7つのサブコマンドがあります。

サブコマンドについて簡単に説明していきます。

### pg_ctl initdb
新しいデータベースクラスタの作成と初期化を行います。
```
$ pg_ctl initdb -D /usr/local/pgsql/data
```

### pg_ctl start
PostgreSQLサーバーを起動します。
```
$ pg_ctl start -D /usr/local/pgsql/data
```

### pg_ctl stop
PostgreSQLサーバーを停止します。
```
$ pg_ctl stop -D /usr/local/pgsql/data
```

### pg_ctl restart
PostgreSQLサーバーを再起動します。
```
$ pg_ctl restart -D /usr/local/pgsql/data
```

### pg_ctl reload
PostgreSQLサーバーを再読み込みします。
```
$ pg_ctl reload -D /usr/local/pgsql/data
```

### pg_ctl status
PostgreSQLサーバーの状態を確認します。
```
$ pg_ctl status -D /usr/local/pgsql/data
```

### pg_ctl kill
PostgreSQLサーバーを強制終了します。
```
$ pg_ctl kill TERM `cat /usr/local/pgsql/data/postmaster.pid`
```

# createuser/createdbコマンドとは

- createuserコマンドとは
「createuser」は、PostgreSQLで新しいユーザーを作成するためのコマンドです。
データベース管理者（PostgreSQLのスーパーユーザー）のみが実行できます。ユーザー名、パスワード、権限などを指定してユーザーを作成することができます。

- createdbとは
「createdb」は、PostgreSQLで新しいデータベースを作成するためのコマンドです。
データベース管理者のみが実行できます。データベース名、所有者、エンコーディング、ロケールなどを指定してデータベースを作成することができます。

コマンドについて簡単に説明していきます。

### ユーザーを作成する
ユーザー名「myuser」を作成します。
```
$ createuser myuser
```

### パスワードを指定する
パスワードを指定してユーザーを作成します。パスワードは、コマンド実行時に入力する必要があります。
```
$ createuser --pwprompt myuser
```

### スーパーユーザーにする
スーパーユーザーになるユーザーを作成します。
```
スーパーユーザーになるユーザーを作成します。
```

### データベースを作成する
データベース名を「mydb」を作成します。
```
$ createdb mydb
```

### データベース所有者を指定する
データベース所有者をユーザー「myuser」に指定して、データベース名「mydb」を作成します。
```
$ createdb --owner myuser mydb
```

### エンコーディングを指定する
エンコーディングをUTF8に指定して、データベース名「mydb」を作成します。
```
$ createdb --encoding UTF8 mydb
```

# dropuser/dropdbとは
- dropuserコマンドとは
「dropuser」は、PostgreSQLで既存のユーザーを削除するためのコマンドです。
データベース管理者（PostgreSQLのスーパーユーザー）のみが実行できます。

- dropdbコマンドとは
「dropdb」は、PostgreSQLで既存のデータベースを削除するためのコマンドです。
データベース管理者のみが実行できます。

### ユーザーを削除する
ユーザー名「myuser」を削除します。
```
$ dropuser myuser
```

### 強制的にユーザーを削除する
ユーザーを強制的に削除します。このオプションを使用すると、ユーザーに紐づくオブジェクトがすべて削除されます。
```
$ dropuser --force myuser
```

### データベースを削除する
データベース名「mydb」を削除します
```
$ dropdb mydb
```

### 強制的にデータベースを削除する
データベースを強制的に削除します。このオプションを使用すると、データベースに紐づくオブジェクトがすべて削除されます。
```
$ dropdb --force mydb
```

### データベースの削除を確認する
データベースの削除を確認するためのインタラクティブモードを起動します。このモードでは、削除するデータベースの情報を表示し、削除するかどうかをユーザーに確認します。
```
$ dropdb --interactive mydb
```

# psqlコマンドとは
「psql」は、PostgreSQLに対するクライアントツールの1つで、PostgreSQLデータベースに対してSQLコマンドを送信するために使用されます。
psqlを使用することで、データベースに接続してデータの参照、更新、削除などを行うことができます。

### データベースに接続する
PostgreSQLサーバーのホスト名が「localhost」、ポート番号が「5432」、ユーザー名が「myuser」、データベース名が「mydb」であるPostgreSQLデータベースに接続します。
```
$ psql -h localhost -p 5432 -U myuser mydb
```

### SQLコマンドを実行する
PostgreSQLデータベースに接続し、「mytable」テーブルのすべてのレコードを取得します。
```
mydb=# SELECT * FROM mytable;
```

## psqlコマンドラインからのコマンドの実行
psqlコマンドラインから、システムコマンドや外部コマンドを実行することができます。
具体的には、psqlコマンドラインで「\」で始まるコマンドを実行することができます。以下は、よく使用されるコマンドになります。

### \qコマンド
psqlセッションを終了します
```
mydb=# \q
```

### \dコマンド
テーブル「mytable」の詳細情報を表示します。
```
mydb=# \d mytable
```

### ヘルプを表示する
psqlコマンドのヘルプ情報を表示します。
```
mydb=# \?
```

# 最後に

今回は、PostgreSQLの標準付属ツールについてまとめました。

これからも私自身が気になったことなどや勉強したことを投稿していこうと思うのでよかったら「いいね」と「フォロー」の程よろしくお願いいたします！

自分が過去に投稿したDB・SQL関連の記事を下記のURLからとべるので、もしよかったらこちらも参考にしてください！
- [SQL超初心者がDB・SQLについて調べてみました](https://qiita.com/takada-syunya/items/5ebd29bda11c7bd24cb3)
- [SQLの基礎的な構文まとめ](https://qiita.com/takada-syunya/items/543beb894c67af69a793)
- [正規化の要点まとめてみました！](https://qiita.com/circular/items/c1249866b5e364c8a7dd)
- [OSS-DB Silverの学習メモ(その１[一般知識])](https://qiita.com/takada-syunya/items/aeed55696a9c0f09fb47)
- [OSS-DB Silver 学習メモその2【initdbについて】](https://qiita.com/takada-syunya/items/98eb24ff76e99e1c54a9)