PostgreSQL のインストールが完了したら、データベース(DB)を作成する手順を説明します!
初心者でもわかりやすいように、順を追って解説しますね。
1. PostgreSQL を起動する
まず、PostgreSQL のサーバーを起動する必要があります。
以下のコマンドを実行してください。
brew services start postgresql
✅ ポイント:
brew services start
を使うと、Mac を再起動しても PostgreSQL が自動で起動します。
動作を確認するには、以下のコマンドを使います。
pg_ctl -D /usr/local/var/postgres status
出力例(正常時):
pg_ctl: server is running
エラーが出た場合は、以下を試してください。
pg_ctl -D /usr/local/var/postgres start
2. PostgreSQL に接続する
PostgreSQL には、デフォルトで postgres
という管理ユーザーがいます。
このユーザーで PostgreSQL に接続します。
psql postgres
成功すると、以下のような psql
の対話モード(シェル)が開きます。
psql (14.3)
Type "help" for help.
postgres=#
もし psql: command not found
というエラーが出たら、以下を試してください。
export PATH="/usr/local/opt/postgresql/bin:$PATH"
3. 新しいデータベースを作成する
psql
のシェルで、以下のコマンドを実行します。
CREATE DATABASE mydb;
✅ ポイント:
mydb
の部分は好きな名前に変更できます。
データベースが作成されたか確認するには、以下を実行します。
\l
データベースの一覧が表示され、その中に mydb
があれば成功です!
4. データベースに接続する
作成したデータベースに接続するには、以下を実行します。
psql mydb
または、psql
のシェル内で
\c mydb
と入力しても OK です。
成功すると、プロンプトが以下のように変わります。
You are now connected to database "mydb" as user "postgres".
mydb=#
5. テーブルを作成する
データを保存するには「テーブル」を作成する必要があります。
例えば、「users」というテーブルを作るには以下の SQL を実行します。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INT
);
✅ 解説
id SERIAL PRIMARY KEY
→ 自動で連番を振る主キーname TEXT NOT NULL
→ 名前(必須)age INT
→ 年齢(整数)
作成したテーブルを確認するには以下を実行します。
\d
または
\d users
で users
テーブルの詳細を表示できます。
6. データを追加する
テーブルにデータを追加してみましょう。
INSERT INTO users (name, age) VALUES ('Taro', 25);
INSERT INTO users (name, age) VALUES ('Hanako', 30);
データが追加されたか確認するには、以下を実行します。
SELECT * FROM users;
✅ ポイント: SQL のコマンドは
;
を忘れないようにしましょう!
実行すると、以下のように表示されるはずです。
id | name | age
----+--------+-----
1 | Taro | 25
2 | Hanako | 30
(2 rows)
7. PostgreSQL を終了する
作業が終わったら、psql
を終了しましょう。
\q
これで psql
のシェルを抜けられます。
もし PostgreSQL のサーバーを停止したい場合は、以下を実行してください。
brew services stop postgresql
まとめ
-
PostgreSQL を起動
brew services start postgresql
-
PostgreSQL に接続
psql postgres
-
データベースを作成
CREATE DATABASE mydb;
-
データベースに接続
psql mydb
-
テーブルを作成
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, age INT);
-
データを追加
INSERT INTO users (name, age) VALUES ('Taro', 25);
-
データを確認
SELECT * FROM users;
-
終了
\q
DBの確認
以下のコマンドを入力して、作成したデータベース mydb
があるか確認してみてください。
\l
もし mydb
が一覧に表示されれば、データベースの作成は成功しています 🎉
一覧に mydb
がない場合は、もう一度 CREATE DATABASE mydb;
を実行してみてください。
💡 psql コマンドの注意点
-
\l
→ データベースの一覧を表示(/l
ではなく\l
) -
\c mydb
→ データベースに接続 -
\q
→ psql を終了
postgres-#
と mydb=#
の違いをわかりやすく説明します!
① postgres=#
と mydb=#
の違い
PostgreSQL のプロンプト(コマンド入力画面)の "最初の部分" は、現在接続しているデータベースの名前 を表しています。
プロンプト | 説明 |
---|---|
postgres=# |
postgres データベースに接続している状態 |
mydb=# |
mydb データベースに接続している状態 |
例えば、以下のように \c mydb
を実行すると、プロンプトが mydb=#
に変わります。
\c mydb
You are now connected to database "mydb" as user "postgres".
mydb=#
これは、今 mydb
というデータベースの中にいる ことを示しています! 🎉
② postgres-#
になるのはなぜ?
postgres-#
という表示は SQL コマンドの入力が途中になっている状態 です。
例えば、以下のように SELECT
文を途中まで書いて ;
(セミコロン)を付け忘れると…
SELECT * FROM users
postgres-#
となります。
これは、まだ SQL 文が完結していない ので、次の行で続きを入力するのを待っている状態です。
ここで ;
を追加すると、実行されます。
SELECT * FROM users;
id | name | age
----+--------+-----
1 | Taro | 25
2 | Hanako | 30
(2 rows)
postgres=#
プロンプトが postgres=#
に戻ったら、通常の入力待ち状態 に戻っています!
③ postgres-#
から抜ける方法
もし SQL 文を途中でやめたい 場合は、以下のキーを押してください。
Ctrl + C
これで 未完成のコマンドをキャンセル し、通常の postgres=#
に戻ります!
まとめ
🔹 postgres=#
→ postgres
データベースに接続している状態
🔹 mydb=#
→ mydb
データベースに接続している状態
🔹 postgres-#
→ SQL コマンドの入力が途中の状態(;
を忘れている)
🔹 Ctrl + C
で postgres-#
の状態を抜ける
次に試してみること
1️⃣ \c mydb
を実行して、mydb=#
に切り替えてみる
2️⃣ SELECT * FROM users
だけ入力して Enter
を押し、postgres-#
になるか試す
3️⃣ Ctrl + C
を押して通常のプロンプトに戻す