0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLの学習:CREATE DATABASEでDatabaseを作成する

0
Posted at

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です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?