はじめに
この実験 (lab) では、PostgreSQL を使用したデータベース管理の基礎を学びます。この実験 (lab) では、新しいデータベースの作成、既存のデータベースの一覧表示と接続、不要になったデータベースの削除など、データベースを管理するための重要な操作について説明します。
まず、createdb コマンドを使用して新しいデータベースを作成し、psql コマンドを通じてその作成を確認します。次に、利用可能なすべてのデータベースを一覧表示し、特定のデータベースに接続する方法を学びます。最後に、データベースを削除し、データベースのメタデータを表示する方法を検討します。この実験 (lab) では、PostgreSQL における基本的なデータベース管理タスクの実践的な入門を提供します。
新しいデータベースの作成
このステップでは、PostgreSQL で新しいデータベースを作成する方法を学びます。データベースの作成は、データを整理して保存するための最初のステップです。
始める前に、データベースとは何かを理解しましょう。データベースとは、アクセス、管理、および更新が容易になるように編成された、構造化されたデータの集合です。PostgreSQL では、データベースはテーブル、ビュー、およびその他のデータベースオブジェクトのコンテナです。
新しいデータベースを作成するには、createdb コマンドを使用します。このコマンドは、SQL コマンド CREATE DATABASE のラッパーです。
ターミナルを開く (Open a terminal): まだ開いていない場合は、ターミナルウィンドウを起動します。
新しいデータベースを作成する (Create a new database):
createdbコマンドの後に、データベースに付けたい名前を入力します。たとえば、mydatabaseという名前のデータベースを作成するには、次のコマンドを実行します。createdb mydatabaseこのコマンドは、
mydatabaseという名前の新しいデータベースを作成します。コマンドが成功すると、何も出力されません。データベースの作成を確認する (Verify the database creation): データベースが作成されたことを確認するには、
psqlコマンドを使用してすべてのデータベースを一覧表示できます。まず、デフォルトのpostgresデータベースに接続します。psql -d postgrespostgres=#プロンプトが表示されます。データベースを一覧表示する (List databases):
postgres=#プロンプトで、次の SQL コマンドを実行して、すべてのデータベースを一覧表示します。\l
このコマンドは、作成したデータベース (
mydatabase) を含むデータベースのリストを表示します。次のような出力が表示されます。データベース一覧 (List of databases) 名前 (Name) | 所有者 (Owner) | エンコーディング (Encoding) | 照合順序 (Collate) | Ctype | アクセス権限 (Access privileges) -----------+----------+----------+-------------+-------------+----------------------- mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 行 (rows))mydatabaseがリストにあることに注目してください。psql を終了する (Exit psql):
psqlプロンプトを終了するには、次のように入力します。\qEnter キーを押します。通常のターミナルプロンプトに戻ります。
これで、PostgreSQL で新しいデータベースを作成できました。
データベースの一覧表示と接続
このステップでは、利用可能なデータベースを一覧表示し、psql コマンドラインツールを使用して特定のデータベースに接続する方法を学びます。
ターミナルを開く (Open a terminal): まだ開いていない場合は、ターミナルウィンドウを起動します。
利用可能なデータベースを一覧表示する (List available databases): すべてのデータベースを一覧表示するには、
-lオプション(小文字の「L」)を指定してpsqlコマンドを使用します。このオプションは、サーバー上のすべてのデータベースを一覧表示します。接続するデータベースを指定していないため、psqlは現在のユーザー名を使用して接続を試みます。psql -lこのコマンドは、データベースのリストを、所有者、エンコーディング、およびその他の情報とともに表示します。次のような出力が表示されます。
データベース一覧 (List of databases) 名前 (Name) | 所有者 (Owner) | エンコーディング (Encoding) | 照合順序 (Collate) | Ctype | アクセス権限 (Access privileges) -----------+----------+----------+-------------+-------------+----------------------- mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 行 (rows))この出力は、データベースの名前、所有者、およびその他の詳細を示しています。前のステップで作成した
mydatabaseデータベースが表示されるはずです。特定のデータベースに接続する (Connect to a specific database): 特定のデータベースに接続するには、
-dオプションの後にデータベースの名前を指定してpsqlコマンドを使用します。たとえば、mydatabaseデータベースに接続するには、次のコマンドを実行します。psql -d mydatabase接続が成功すると、
mydatabase=#プロンプトが表示されます。これは、mydatabaseデータベースに接続されていることを示します。接続を確認する (Verify the connection): 正しいデータベースに接続されていることを確認するには、次のような簡単な SQL コマンドを実行します。
SELECT version();
このコマンドは、接続している PostgreSQL サーバーのバージョンを表示します。出力は次のようになります。
version ---------------------------------------------------------------------------------------------------------------- PostgreSQL 14.7 (Debian 14.7-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit (1 行 (row))psql を終了する (Exit psql):
psqlプロンプトを終了するには、次のように入力します。\qEnter キーを押します。通常のターミナルプロンプトに戻ります。
これで、利用可能なデータベースを一覧表示し、psql を使用して特定のデータベースに接続できました。
データベースの削除
このステップでは、PostgreSQL でデータベースを削除 (drop) する方法を学びます。データベースの削除は永続的な操作であるため、このコマンドを使用する際は注意が必要です。データベース内のすべてのデータが失われます。
ターミナルを開く (Open a terminal): まだ開いていない場合は、ターミナルウィンドウを起動します。
データベースを削除する (Drop the database):
dropdbコマンドの後に、削除するデータベースの名前を入力します。たとえば、mydatabaseデータベースを削除するには、次のコマンドを実行します。dropdb mydatabaseこのコマンドは、
mydatabaseデータベースを削除します。コマンドが成功すると、何も出力されません。重要 (Important): データベースを削除する前に、誰も接続していないことを確認してください。アクティブな接続がある場合、
dropdbコマンドは失敗する可能性があります。データベースの削除を確認する (Verify the database deletion): データベースが削除されたことを確認するには、
psqlコマンドを使用してすべてのデータベースを一覧表示できます。まず、デフォルトのpostgresデータベースに接続します。psql -d postgres
postgres=#プロンプトが表示されます。データベースを一覧表示する (List databases):
postgres=#プロンプトで、次の SQL コマンドを実行して、すべてのデータベースを一覧表示します。\lこのコマンドは、データベースのリストを表示します。
mydatabaseがリストにないことを確認します。データベース一覧 (List of databases) 名前 (Name) | 所有者 (Owner) | エンコーディング (Encoding) | 照合順序 (Collate) | Ctype | アクセス権限 (Access privileges) -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 行 (rows))mydatabaseがリストにない場合、正常に削除されています。psql を終了する (Exit psql):
psqlプロンプトを終了するには、次のように入力します。\qEnter キーを押します。通常のターミナルプロンプトに戻ります。
これで、PostgreSQL でデータベースを正常に削除できました。データベースの削除は元に戻せないため、実行する際は注意してください。
データベースのメタデータを表示
このステップでは、PostgreSQL でデータベースのメタデータを表示する方法を学びます。メタデータとは、「データに関するデータ」のことです。データベースのコンテキストでは、メタデータは、テーブル、カラム、データ型、制約などの情報を含む、データベース自体の構造と特性を記述します。
ターミナルを開く (Open a terminal): まだ開いていない場合は、ターミナルウィンドウを起動します。
postgresデータベースに接続する (Connect to thepostgresdatabase): 前のステップでmydatabaseを削除したため、デフォルトのpostgresデータベースに接続してメタデータを調べます。psql -d postgrespostgres=#プロンプトが表示されます。テーブルを一覧表示する (List tables): 現在接続されているデータベース内のすべてのテーブルを一覧表示するには、
\dtコマンドを使用します。\dtまだテーブルを作成していないため、出力は空であるか、システムテーブルが表示されるはずです。次のように表示される場合があります。
リレーションが見つかりませんでした (Did not find any relations).または
リレーション一覧 (List of relations) スキーマ (Schema) | 名前 (Name) | 型 (Type) | 所有者 (Owner) --------+-----------------------+-------+---------- pg_catalog | pg_aggregate | table | postgres pg_catalog | pg_am | table | postgres pg_catalog | pg_amop | table | postgres ...出力には、各テーブルのスキーマ、名前、型、および所有者が表示されます。
テーブルを記述する (Describe a table): 特定のテーブルに関する詳細情報を表示するには、
\dコマンドの後にテーブル名を入力します。ユーザーが作成したテーブルがないため、システムテーブルの例としてpg_classを調べてみましょう。\d pg_class
このコマンドは、カラム名、データ型、および制約を含む、
pg_classテーブルの構造を表示します。出力は非常に広範囲になりますが、テーブルの定義の包括的な概要を提供します。テーブル "pg_catalog.pg_class" (Table "pg_catalog.pg_class") カラム (Column) | 型 (Type) | 照合順序 (Collation) | Nullable | デフォルト (Default) | 格納 (Storage) | 統計ターゲット (Stats target) | 説明 (Description) -------------------+-----------+-----------+----------+---------+----------+--------------+------------- oid | oid | | not null | | plain | | relname | name | | not null | | plain | | relnamespace | oid | | not null | | plain | | reltype | oid | | not null | | plain | | reloftype | oid | | not null | | plain | | relowner | oid | | not null | | plain | | relam | oid | | not null | | plain | | relfilenode | oid | | not null | | plain | | reltablespace | oid | | not null | | plain | | relpages | integer | | not null | | plain | | reltuples | real | | not null | | plain | | relallvisible | boolean | | not null | | plain | | reltoastrelid | oid | | not null | | plain | | relhasindex | boolean | | not null | | plain | | relhasrules | boolean | | not null | | plain | | relhastriggers | boolean | | not null | | plain | | relhassubclass | boolean | | not null | | plain | | relrowsecurity | boolean | | not null | | plain | | relforcerowsecurity| boolean | | not null | | plain | | relispopulated | boolean | | not null | | plain | | relreplident | character | | not null | | plain | | relispartition | boolean | | not null | | plain | | relrewrite | oid | | not null | | plain | | relacl | aclitem[] | | | | plain | | reloptions | text[] | | | | plain | | relpartbound | pg_node_tree | | | | extended | | インデックス (Indexes): "pg_class_oid_index" UNIQUE, btree (oid) "pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace) 外部キー制約 (Foreign-key constraints): "pg_class_relam_fkey" FOREIGN KEY (relam) REFERENCES pg_am(oid) "pg_class_relnamespace_fkey" FOREIGN KEY (relnamespace) REFERENCES pg_namespace(oid) "pg_class_relowner_fkey" FOREIGN KEY (relowner) REFERENCES pg_authid(oid) "pg_class_reltoastrelid_fkey" FOREIGN KEY (reltoastrelid) REFERENCES pg_class(oid) 参照元 (Referenced by): テーブル (TABLE) "pg_statistic_ext" 制約 (CONSTRAINT) "pg_statistic_ext_relid_fkey" FOREIGN KEY (relid) REFERENCES pg_class(oid) テーブル (TABLE) "pg_rewrite" 制約 (CONSTRAINT) "pg_rewrite_ev_class_fkey" FOREIGN KEY (ev_class) REFERENCES pg_class(oid) テーブル (TABLE) "pg_trigger" 制約 (CONSTRAINT) "pg_trigger_tgrelid_fkey" FOREIGN KEY (tgrelid) REFERENCES pg_class(oid)psql を終了する (Exit psql):
psqlプロンプトを終了するには、次のように入力します。\qEnter キーを押します。通常のターミナルプロンプトに戻ります。
これで、psql を使用して PostgreSQL でデータベースのメタデータを正常に表示できました。これにより、データベースとテーブルの構造とプロパティを理解できます。
まとめ
この実験 (lab) では、新しいデータベースの作成から始めて、PostgreSQL でのデータベース管理の基本を学びました。このプロセスには、ターミナルで createdb コマンドの後に目的のデータベース名を入力することが含まれます。実行が成功すると、出力なしでデータベースが作成されます。
作成を確認するには、psql -d postgres を使用してデフォルトの postgres データベースに接続し、\l コマンドを使用して利用可能なすべてのデータベースを一覧表示し、新しく作成されたデータベースが存在することを確認します。


