初心者向けSQL実行環境構築ガイド：PostgreSQL

## ローカル環境でPostgreSQLデータベースを構築し、A5:SQL Mk-2で接続する方法

この記事では、Dockerを使用してローカル環境にPostgreSQLデータベースを構築し、A5:SQL Mk-2（A5M2）を使ってデータベースに接続する方法をステップバイステップで紹介します。

### ステップ 1: Dockerのインストール

まず、Dockerがインストールされていない場合は、公式サイトからダウンロードしてインストールします。

- [Docker公式サイト](https://www.docker.com/products/docker-desktop)

### ステップ 2: Dockerデーモンの起動確認

Dockerデーモンが起動していることを確認します。WindowsやMacでは、Docker Desktopを起動してDockerデーモンを開始します。デーモンが起動している場合、タスクトレイにDockerのアイコンが表示されます。

### ステップ 3: DockerコンテナでPostgreSQLをセットアップ

Dockerデーモンが正常に起動していることを確認したら、PostgreSQLのDockerイメージを使ってコンテナを立ち上げます。以下のコマンドをターミナルで実行します。

```bash
docker run --name my_postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
```

このコマンドの内容は以下の通りです：
- `--name my_postgres`: コンテナ名を `my_postgres` に指定。
- `-e POSTGRES_PASSWORD=mysecretpassword`: `mysecretpassword` をPostgreSQLのスーパーユーザーパスワードとして設定。
- `-d`: コンテナをデタッチドモードで実行（バックグラウンドで実行）。
- `-p 5432:5432`: ローカルのポート5432をコンテナのポート5432にマッピング。
- `postgres`: 使用するDockerイメージ。

### ステップ 4: Dockerコンテナの起動確認

コンテナが正常に起動していることを確認するために、以下のコマンドを実行します。

```bash
docker ps
```

起動中のコンテナのリストが表示され、`my_postgres` が含まれていることを確認します。

### ステップ 5: PostgreSQLコンテナに接続

PostgreSQLクライアントツール（例えばpgAdmin、DBeaver、psql）を使用してデータベースに接続することができます。ここでは、`psql`コマンドラインツールを使用する方法を説明します。

まず、Dockerコンテナにシェルで接続します。

```bash
docker exec -it my_postgres bash
```

次に、PostgreSQLデータベースに接続します。

```bash
psql -U postgres
```

ここで、パスワードを求められるので、`mysecretpassword` を入力します。

### ステップ 6: データベースの永続化

データベースデータを永続化するには、Dockerボリュームを使用することが推奨されます。次のようにしてボリュームを作成し、コンテナを起動します。

```bash
docker volume create pgdata

docker run --name my_postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres
```

この手順により、コンテナが停止・再起動してもデータは保持されます。

### ステップ 7: A5:SQL Mk-2のインストール

A5:SQL Mk-2がインストールされていない場合は、以下のリンクからインストールしてください：

- [A5:SQL Mk-2公式サイト](https://a5m2.mmatsubara.com/)

### ステップ 8: A5:SQL Mk-2での接続設定

A5:SQL Mk-2を使用して、PostgreSQLコンテナに接続するための設定を行います。

1. A5:SQL Mk-2を起動します。
2. メインメニューから「ファイル」→「新しい接続」を選択します。
3. 接続ウィンドウで以下の情報を入力します：
   - **接続名**：任意の名前（例：`PostgreSQL Docker`）
   - **DBMSの種類**：`PostgreSQL`
   - **ホスト名**：`localhost`
   - **ポート番号**：`5432`
   - **データベース名**：`postgres`
   - **ユーザー名**：`postgres`
   - **パスワード**：`mysecretpassword`
4. 必要に応じて「接続テスト」をクリックして、接続が成功することを確認します。
5. 「OK」をクリックして設定を保存し、接続を開きます。

### ステップ 9: データベースへのアクセス

設定が完了すると、A5:SQL Mk-2の左ペインにデータベースが表示されます。これで、データベースに対してSQLクエリを実行したり、スキーマを管理したりすることができます。

### ステップ 10: コンテナの停止

作業が終了したら、Dockerコンテナを停止する必要があります。以下の手順でコンテナを停止します。

#### 実行中のコンテナの確認

まず、実行中のコンテナを確認します。

```bash
docker ps
```

#### コンテナの停止

次に、コンテナを停止します。`my_postgres` という名前のコンテナを停止するには、以下のコマンドを実行します。

```bash
docker stop my_postgres
```

### ステップ 11: PostgreSQLセッションからの安全な退出

`psql`コマンドラインツールを使ってPostgreSQLデータベースに接続している場合、以下の方法で安全に退出できます。

#### `psql`からの退出方法

`psql`セッションを終了するには、以下のコマンドを入力します。

```sql
\q
```

`\q`と入力し、Enterキーを押すと、`psql`セッションが終了し、シェルプロンプトに戻ります。

#### Dockerコンテナからの退出方法

Dockerコンテナのシェルから退出するには、以下の手順を実行します。

##### コンテナシェルから退出

コンテナのシェルに接続している場合、通常のシェル終了コマンドを使用して退出できます。

```bash
exit
```

`exit`と入力し、Enterキーを押すと、Dockerコンテナのシェルセッションが終了し、ホストシステムのシェルプロンプトに戻ります。

### まとめ

以上の手順で、Dockerコンテナを使用してPostgreSQLデータベースを構築し、A5:SQL Mk-2を使用して接続および操作を行う方法を紹介しました。また、コンテナを停止し、PostgreSQLセッションから安全に退出する方法も説明しました。これらの手順を守ることで、安全に作業を終了することができます。

#### コンテナの停止

1. 実行中のコンテナを確認: `docker ps`
2. コンテナを停止: `docker stop my_postgres`

#### PostgreSQLセッションからの退出

1. `psql`セッションを終了: `\q`
2. コンテナシェルから退出: `exit`

これらの手順をお試しください！