PostgreSQLの学習:CREATE DATABASEでDatabaseを作成する
今回はPostgreSQLで新しいDatabaseを作成する方法について学習します。
PostgreSQLでは、CREATE DATABASEというSQL文を使ってDatabaseを作成できます。
今回は実際にpractice_dbというDatabaseを作成し、作成されたDatabaseをpsqlから確認します。
所要時間は10分ほどです。
それでは、さっそく始めていきましょう!
CREATE DATABASEとは
CREATE DATABASEとは、新しいDatabaseを作成するためのSQL文です。
基本的な構文は以下になります。
CREATE DATABASE database_name;
それぞれ、
CREATE DATABASE
└── Databaseを作成する命令
database_name
└── 作成するDatabaseの名前
;
└── SQL文の終端
という意味になります。
今回はpractice_dbというDatabaseを作成するため、以下のSQLを使用します。
CREATE DATABASE practice_db;
PostgreSQL ServerとDatabaseの関係
PostgreSQL Serverは複数のDatabaseを管理できます。
例えば、今回の環境では以下のような関係になります。
PostgreSQL Server
│
├── postgres
├── practice_db
├── template0
└── template1
ここで重要なのは、postgresとpractice_dbは別々のDatabaseであるという点です。
postgres
≠
practice_db
どちらもPostgreSQL Serverによって管理されるDatabaseです。
psqlでPostgreSQL Serverに接続する
まず、psqlを使ってPostgreSQL Serverへ接続します。
今回は以下のコマンドを実行しました。
/opt/homebrew/opt/postgresql@17/bin/psql postgres
このコマンドは以下のように分けて考えることができます。
/opt/homebrew/opt/postgresql@17/bin/psql postgres
└─────────────────────────────────────┘ └──────┘
psql 接続先Database
psqlはPostgreSQL Serverへ接続するClientとして機能するプログラムです。
最後のpostgresはServer名ではなく、今回接続するDatabaseの名前です。
接続すると、
postgres=#
のように表示されます。
CREATE DATABASEでDatabaseを作成する
PostgreSQL Serverへ接続した状態で、以下のSQLを実行します。
CREATE DATABASE practice_db;
実行に成功すると、
CREATE DATABASE
と表示されます。
これによって、practice_dbという新しいDatabaseが作成されました。
関係を図にすると以下になります。
PostgreSQL Server
│
├── postgres
└── practice_db ← 新しく作成
practice_dbはpostgres Databaseの中に作られるのか
ここで注意が必要なのが、practice_dbが作られる場所です。
今回は、
/opt/homebrew/opt/postgresql@17/bin/psql postgres
によってpostgres Databaseへ接続してから、
CREATE DATABASE practice_db;
を実行しました。
しかし、practice_dbがpostgres Databaseの内部に作られるわけではありません。
以下のような関係ではありません。
PostgreSQL Server
└── postgres
└── practice_db
実際には、postgresとpractice_dbは別々のDatabaseとしてPostgreSQL Serverに管理されます。
PostgreSQL Server
│
├── postgres
└── practice_db
つまり、
postgres Database
└── practice_db Database
という入れ子構造ではなく、
PostgreSQL Server
├── postgres Database
└── practice_db Database
という関係です。
Databaseの一覧を確認する
作成したDatabaseを確認するため、psql上で以下を実行します。
\l
今回は一覧に、
postgres
practice_db
template0
template1
が表示され、practice_dbが作成されていることを確認できました。
ここで、\lはSQLではありません。
psqlを操作するためのメタコマンドです。
したがって、
CREATE DATABASE practice_db;
└── SQL
\l
└── psqlのメタコマンド
という違いがあります。
CREATE DATABASEと\lの違い
今回使用した2つの命令を整理します。
| 命令 | 分類 | 役割 |
|---|---|---|
CREATE DATABASE practice_db; |
SQL |
practice_dbというDatabaseを作成する |
\l |
psqlのメタコマンド | Databaseの一覧を表示する |
CREATE DATABASEはPostgreSQL Serverに対するSQL文です。
一方、\lはSQLではなく、psqlというClientが提供するコマンドです。
この2つを区別することが重要です。
今回の操作の流れ
今回実施した操作を整理すると以下になります。
Terminal
│
│ psqlを起動
↓
psql
│
│ Connection
↓
PostgreSQL Server
│
│ postgres Databaseへ接続
↓
CREATE DATABASE practice_db;
│
│ 新しいDatabaseを作成
↓
practice_db
│
│ \lで確認
↓
Database一覧にpractice_dbが表示される
より構造的に整理すると、
psql
│
│ Connection
↓
PostgreSQL Server
│
├── postgres
├── practice_db
├── template0
└── template1
となります。
まとめ
今回はCREATE DATABASEを使用して、PostgreSQLに新しいDatabaseを作成しました。
今回使用した主な命令は以下の2つです。
| 命令 | 意味 |
|---|---|
CREATE DATABASE practice_db; |
practice_dbというDatabaseを作成するSQL |
\l |
Database一覧を表示するpsqlのメタコマンド |
特に重要なのは、postgres Databaseへ接続した状態でpractice_dbを作成しても、practice_dbがpostgresの内部に作られるわけではないという点です。
PostgreSQL Server
│
├── postgres
└── practice_db
postgresとpractice_dbは、それぞれPostgreSQL Serverによって管理される別々のDatabaseです。