PostgreSQL(Postgresとも)は言うなれば、オブジェクトリレーショナルデータベース管理の礎石です。Postgresは、開発に何十年も費やされたデータベースであり、高いパフォーマンスを支える信頼性と柔軟性を兼ね備えています。

今回の記事では、Postgresでデータベースとテーブルを作成、削除する方法をご説明します。さらに、Adminerのようなデータベース管理ツールを使用して、同じタスクを処理する方法も扱いたいと思います。

PostgreSQLを利用する

まず始めに、システムにPostgresがインストールされていることを確認してください。インストールされていない場合は、必要なファイルをダウンロードし、インストール手順に従ってください。

ここで紹介するコマンドはmacOSを想定して実演していますが、どのOS上でもシームレスに動作するはずです。

Postgresがインストールできたら、ターミナルで次のコマンドを入力し、すべてが問題なく稼働していることを確認してください。

postgres -V

このコマンドにより、Postgresのバージョン番号が返されるはずです。

Postgresのバージョン番号
Postgresのバージョン番号が表示された

PostgreSQLデータベースサーバーへの接続方法

Postgresをシステムにインストールし、データベースを作成する準備ができました。続いてはどうやってデータベースにアクセスするのかです。そこでPostgresの対話型ターミナル、通称psqlの出番です。PsqlはPostgresのターミナルベースのフロントエンドで、Postgresにクエリを出し、クエリ結果を表示することができます。

インストール時に、Postgresはデータベース内で最上のアクセス権を持つデフォルトのスーパーユーザーをオペレーティングシステム(OS)上に作成します。このコマンドを使用すると、デフォルトのスーパーユーザーとしてpsqlターミナルにログインすることができます。

psql postgres

このコマンドを実行すると、ターミナルがpostgres=#に変わり、デフォルトのスーパーユーザーとしてログインしていることがわかります。

psqlを使用する最大の利点の1つがメタコマンドです。この機能により、正確なSQLコマンドを知らなくても、データベースへの接続やテーブルの表示などのデータベース管理タスクを実行することができます。

psqlでメタコマンドを使用するには、バックスラッシュ(\)の後にコマンドを続けます。以下はその例です。

  • \c <database-name>─特定のデータベースに接続
  • \l─サーバー上のすべてのデータベースを一覧表示
  • \dt─データベース内のすべてのテーブルを表示

PostgreSQLデータベースの作成方法

データベースを扱う際には、特定の権限を持つユーザーを新規に作成し、最小権限の原則に従うのが得策です。とはいえ、この記事ではシンプルに説明できるように、デフォルトのスーパーユーザーを使用してデータベースを作成し、管理することにします。

まず、以下のメタコマンドを実行し、Postgresサーバー上の全ユーザを一覧表示します。

\du

新しいユーザーを特に追加していない場合は、デフォルトのスーパーユーザーのみが表示されるはずです。

ローカルPostgresサーバーのユーザー
ローカルPostgresサーバーのユーザー一覧を表示したところ

デフォルトのスーパーユーザーは、システムの設定によってはPostgresまたはOSのユーザー名として表示されます。

デフォルトでは、スーパーユーザーはパスワードを持ちません。後でデータベースを管理するために、以下のコマンドを使用してパスワードを設定しましょう。

\password <superuser-name>

プロンプトが表示されたらパスワードを入力し、確認してください。これで、Postgresサーバーにデータベースを作成する準備ができました。データベースを作成する構文としてCREATE DATABASE <database-name>を使用します。

まずはsalesという名前のデータベースを作成してみましょう。

CREATE DATABASE sales;

データベースの作成が完了すると、次のように表示されます。

Postgresデータベースの作成
Postgresデータベースの作成

次に、以下のコマンドでさらに2つのデータベース、customersemployeesを作成します。

CREATE DATABASE customers;
CREATE DATABASE employees;

これで、ローカルのPostgresサーバに3つのデータベースが作成されました。作成した全てのデータベースを表示するには、次のメタコマンドを使用してください。

\l
ローカルPostgresサーバーのデータベース
ローカルPostgresサーバーのデータベース

これまでに作成した3つのデータベースが表示されています。複数のデータベースはデフォルトでPostgresのインストール時に付属するため、画像内の他のデータベースは無視して構いません。

次に、特定のデータベースを指定して接続することができます。どのデータベースであっても、接続するためのメタコマンドは\c <database-name>を使います。

以下のコマンドを実行して、salesデータベースに接続してみます。

\c sales

ターミナルに以下のメッセージが表示されるはずです。

データベースに接続する
データベースに接続したことがわかる

一度データベースに接続すれば、同じコマンドで簡単にサーバー上の別のデータベースに切り替えることができます。例えば、salesデータベースから、customersデータベースに接続するには、次のコマンドを実行します。

\c customers

テーブルの作成

データベースにデータを入れるためには、まずテーブルを作成する必要があります。Postgresでテーブルを作成する構文は以下の通りです。

CREATE TABLE <table-name> (
<column1-name> <column1-datatype> <column1-constraint>,
<column2-name> <column2-datatype> <column2-constraint>,
<column3-name> <column3-datatype> <column3-constraint>,
…
…
<columnN-name> <columnN-datatype> <columnN-constraint>
);

salesデータベースに接続するところから始めます。

\c sales

次に、productsテーブルを作成します。カラムはproduct_idproduct_namequantity_soldです。

CREATE TABLE products(
   Product_id			INT     NOT NULL,
   Product_name		TEXT    NOT NULL,
   Quantity_sold		   INT     NOT NULL
);

操作が完了すると、次のような出力が表示されます。

データベースにテーブルを作成する
データベースにテーブルを作成する様子

次に、以下のメタコマンドを使用して、productsテーブルが正常に作成されたことを確認しましょう。

\dt

このコマンドにより、データベース内のすべてのテーブル(この場合は1つのテーブル)が一覧表示されます。salesデータベースに接続しているので、以下の出力が確認できるはずです。

salesデータベースのテーブル
salesデータベースのテーブルを確認する

次に、employeesデータベースに2つのテーブルを作成します。最初のテーブルは給料のリストで、2番目は住所のリストです。これらのテーブルを作成するには、以下のコマンドを実行します。

\c employees

CREATE TABLE salary(
   Employee_id		INT     NOT NULL,
   Employee_name		TEXT    NOT NULL,
   Employee_salary		INT     NOT NULL
);

CREATE TABLE address(
   Employee_id		INT     NOT NULL,
   Employee_country		TEXT    NOT NULL,
   Employee_zipcode		INT     NOT NULL
);

最後に、\dtメタコマンドを実行して、上記のテーブルが作成されたことを確認します。次のような出力が表示されるはずです。

employeesデータベースのテーブル
employeesデータベースのテーブルを確認する

PostgreSQLデータベースの削除方法

データベースの削除は作成と同じくらい簡単です。データベースを削除する構文にはDROP DATABASE <database-name>;を使います。

データベースを削除するために、特定のデータベースに接続する必要はありません。例えば、customersデータベースを削除したい場合、どのデータベースに接続していても、以下のコマンドを実行することができます。

DROP DATABASE customers;

削除が完了すると、次の画面が表示されるはずです。

Postgresデータベースの削除
Postgresデータベースを削除したところ

\lメタコマンドを使用してローカルのPostgresサーバ上のデータベースを一覧表示することで、customersデータベースが存在しないことを確認できます。

ローカルのPostgresサーバー上のデータベースを一覧表示する
ローカルのPostgresサーバー上のデータベースを一覧表示する

AdminerによるPostgreSQLデータベース操作の実行

ここまでは、コマンドラインからデータベースやテーブルを作成し、またデータベースを削除することで、Postgresの基礎を学びました。

とは言え、コマンドラインでの操作は時に難しく感じられることもあるかもしれません。そこでAdminerのようなデータベース管理ツールが役立ちます。Adminerを使えば、上記のデータベース操作をすべてGUIで行うことができます。Adminerは単独で使用することもできますが、DevKinsta標準コンポーネントでもあります。

Adminerでデータベースを管理するには、Adminer PHPファイルもダウンロードする必要があります。ターミナルを開き、PHPファイルを実行する組み込みのウェブサーバーを起動し、Adminer PHPファイルを配置した場所にコマンドで移動します。

cd path/to/Adminer php file 

次に、以下のコマンドを使用してウェブサーバーを起動します。

php -S 127.0.0.1:8000

これでウェブブラウザでAdminer UIを使用するための準備は完了です。ウェブブラウザに(ファイル名の部分を変えた上で)「http://localhost:8000/<your-Adminer-php-file.php>」を入力してください。

ウェブブラウザにAdminerのユーザーインターフェース(UI)が表示されるはずです。

AdminerのホームページUI
AdminerのホームページUI

ローカルのPostgresサーバーにアクセスするには、以下の指示に従ってください。

  1. System」フィールドで「PostgreSQL」を選択
  2. Server」フィールドは「localhost」のまま編集しない
  3. Username」には、スーパーユーザー名を入力(「postgres」またはコンピュータのオペレーティングシステムのユーザー名)
  4. Password」には、「Postgresデータベースの作成方法」セクションで設定したスーパーユーザーのパスワードを入力
  5. Database」フィールドは空のままにしておく

認証に成功すると、以下のように以前に作成したすべてのデータベースが表示されます。Windows では、「None of the supported PHP extensions (PgSQL, PDO_PgSQL) is available.」というエラーが発生する可能性があります。これが発生した場合には、php.iniファイルを編集して該当する拡張モジュールを有効にしてください。

AdminerでのPostgresデータベースの表示
AdminerでのPostgresデータベースの表示

データベースを新規作成するには、「Create database」 のリンクをクリックします。

Adminerで新しいデータベースを作成する
Adminerでデータベースを新規作成する

データベース名をcustomersとし、「Save」ボタンをクリックします。

次に、以下に示す「Server」のリンクをクリックして、customersデータベースが作成されたことを確認することができます。

ローカルのPostgresサーバーに移動する
ローカルのPostgresサーバーに移動して確認する

customersデータベースが表示されるはずです。customersをクリックして接続します。

ご覧の通り、このデータベースにはまだテーブルがありません。「Create table」のリンクをクリックして、locationsというテーブルを新規作成します。

Adminerを使用してデータベースにテーブルを作成する
Adminerを使用してデータベースにテーブルを作成する

下の画像にあるように情報を入力したら、「Save」ボタンをクリックします。

データベースにテーブルを作成する最後のステップ
データベースにテーブルを作成する最後のステップ

これで、以下のようにcustomersデータベースにテーブルが表示されるはずです。

テーブル作成の確認メッセージ
テーブル作成が完了したことを示す確認メッセージ

Server」のリンクを再度クリックして、すべてのデータベースを表示できます。ここで「customers」にチェックを入れてください。customersデータベースにチェックを入れることで、下のドロップボタンが有効になります。「drop」をクリックしてデータベースを削除できます。これを選択するとデータベースの削除に関する確認メッセージが表示されます。

データベースの削除に関する確認メッセージ
データベースの削除に関する確認メッセージ

まとめ

今回の記事では、ローカルのPostgresサーバー上でコマンドラインからデータベース、そしてデータベースのテーブルを作成する方法、さらにデータベースを削除する方法をご紹介しました。加えて、Adminerのようなデータベース管理ツールを使用して、同じタスクを簡単に実行する方法も扱いました。

コマンドラインによるデータベースやテーブルの管理も機能的ですが、AdminerのUIを使用することでも、繰り返しの多いタスクを簡単に実行することができます。

WordPress開発者の皆さんには、DevKinstaのお試しをおすすめします。Adminerの利用やデータベースの管理が捗る機能が豊富に盛り込まれています。PostgreSQLデータベースの管理を効率化するには、DevKinstaをこちらからご確認ください。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。