PostgreSQL | psql を使用して PostgreSQL に接続 | psql で SQL コマンドを実行する

psqlSELECT 文や CREATE 文などの SQL コマンドを実行する方法について説明する。

SQL コマンドを実行する

データベースやテーブルを作成したり、テーブルに保存されたデータを検索したりするには、psql で SQL コマンドを実行する必要がある。実際には、SQL コマンドがサーバーに送信されて処理される。SQL コマンドを実行するには、まずコマンドプロンプトを起動し、psql を使用して PostgreSQL に接続する。

C:\Users\kimkc>psql -U postgres
postgres ユーザーのパスワード:
psql (12.2)
ヘルプを表示するには "help" と入力してください。

postgres=#

次のようなプロンプトが表示される。

postgres=#

SQL コマンドを実行するには、次のように入力する。

postgres=# SQL文;

SQL コマンドを入力するときは、最後にセミコロン (;) を入力してから Enter キーを押すと SQL コマンドが実行される。セミコロンを入力する前に Enter キーを押しても、入力が分割されるだけで実行されない。

実際に試してみる。新しいデータベースを作成する。次のように入力して Enter キーを押す。

postgres=# create database sample;
postgres=# create database sample;
CREATE DATABASE
postgres=#

SQL コマンドがサーバーに送信され、処理された。

SQL コマンドを分割して入力する

SQL コマンドが長い場合は、分割して入力できる。実際に試してみる。ここでは例として、テーブルを作成する SQL コマンドを分割して入力する。まず create だけを入力して Enter キーを押す。

postgres=# create
postgres-#

SQL コマンドを実行するときは、最後にセミコロンを入力して Enter キーを押す。セミコロンが入力される前に Enter キーを押すと、入力が継続中であると見なされる。

分割入力中は、プロンプト表示が postgres=# から postgres-# に変わるため区別できる。

次に table staff と入力して Enter キーを押す。

postgres=# create
postgres-# table staff
postgres-#

最後に (id integer, name character varying(10)); と入力して Enter キーを押す。セミコロン (;) が入力された後に Enter キーが押されたため、SQL コマンドの入力が完了したと判断され、SQL コマンドが実行される。

postgres=# create
postgres-# table staff
postgres-# (id integer, name character varying(10));
CREATE TABLE
postgres=#

SQL コマンドが実行され、新しいテーブルが作成された。

このように、長い SQL コマンドは入力途中で Enter キーを押すことで分割して入力できる。

分割入力の途中でキャンセルする

SQL コマンドを分割して入力している途中で SQL コマンドの入力をキャンセルしたい場合は、psql コマンド \r を入力して Enter キーを押す。

実際に試してみる。create table まで入力して Enter キーを押す。

postgres=# create table
postgres-#

ここで入力をキャンセルするために、\r を入力して Enter キーを押す。

postgres=# create table
postgres-# \r
クエリバッファをリセットしました (空にしました)。
postgres=#

これで SQL コマンドの入力がキャンセルされる。

psql で SQL コマンドを実行する方法について説明した。