PostgreSQL入門 - psqlでデータベースとテーブルを1つ作る

入門 | 20分 で読める | 2024.12.19

公式ドキュメント

今回やること

PostgreSQLは、表の形でデータを管理するリレーショナルデータベース管理システムです。この記事では、付属のコマンドラインツールpsqlを使い、次の流れだけを試します。

  1. PostgreSQLへ接続する
  2. 学習用データベースとテーブルを1つ作る
  3. 3件のデータを追加して読み取る
  4. 学習用データベースを削除する

JOIN、更新、削除、インデックスなどは、別のPractice記事で1テーマずつ学びます。

PostgreSQLを準備する

2026年7月25日時点の現行安定版はPostgreSQL 18です。PostgreSQL 19はBeta段階のため、この学習では安定版を選んでください。

インストール方法と最初の接続方法はOSや配布元によって異なります。

環境導入時の注意代表的な接続例
WindowsPostgreSQL公式Downloadページから案内されるインストーラーを使う。設定したpostgresユーザーのパスワードを控えるpsql -U postgres -h localhost -d postgres
macOS公式ページにはインストーラーやPostgres.appなど複数の選択肢がある。Homebrewはコミュニティの方法で、入る版が変わることがあるpsql -d postgres
Ubuntuなどディストリビューション標準パッケージとPostgreSQL公式リポジトリでは、提供される版が異なるsudo -u postgres psql

固定された古いバージョン番号をそのままコピーせず、PostgreSQL公式Downloadページから自分のOS向け手順を確認してください。

インストール後、ターミナルで次を実行します。

psql --version

psql (PostgreSQL) 18.xのように表示されれば、クライアントを実行できています。18以外のサポート中の安定版でも、この記事のSQLは試せます。

1. PostgreSQLへ接続する

前の表から、自分の環境に合う接続コマンドを1つ実行します。たとえば、postgresユーザーでローカルサーバーへ接続する場合は次のとおりです。

psql -U postgres -h localhost -d postgres

パスワードを求められたら、インストール時に設定したものを入力します。入力中の文字は画面に表示されません。

接続後、postgres=#のようなプロンプトが表示されます。次の2つを実行してください。

\conninfo
SELECT version();

\conninfopsql専用の確認コマンドです。SELECT version();はデータベースへ問い合わせるSQLです。SQLの末尾にはセミコロンが必要です。

2. 学習用データベースを作る

CREATE DATABASE ada_learning;

CREATE DATABASEと表示されたら、接続先を切り替えます。

\connect ada_learning

次のコマンドで、接続先がada_learningになったことを確認します。

\conninfo

3. booksテーブルを作る

テーブルは、同じ項目を持つデータを行として保存する場所です。今回は本のタイトルとページ数だけを保存します。

CREATE TABLE books (
  id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  title text NOT NULL,
  pages integer NOT NULL CHECK (pages > 0)
);
  • PRIMARY KEYは各行を区別する値です
  • NOT NULLは値の未入力を禁止します
  • CHECKは0以下のページ数を禁止します

作成結果をpsqlで確認します。

\d books

4. 3件追加して読み取る

INSERTで3冊を追加します。

INSERT INTO books (title, pages)
VALUES
  ('はじめてのHTML', 180),
  ('やさしいJavaScript', 320),
  ('SQLの基本', 240);

続けてSELECTで読み取ります。

SELECT id, title, pages
FROM books
ORDER BY id;

次のように3行が表示されれば成功です。idは自動で割り当てられます。

 id |        title         | pages
----+----------------------+-------
  1 | はじめてのHTML       |   180
  2 | やさしいJavaScript   |   320
  3 | SQLの基本            |   240

成功確認

次のSQLで、行数と平均ページ数を確認します。

SELECT count(*) AS book_count, avg(pages) AS average_pages
FROM books;

book_count3なら、テーブル作成、INSERT、SELECTの一連の操作が完了しています。

後片付け

PostgreSQLは、現在接続しているデータベースを削除できません。必ず先に別のデータベースへ接続します。

\connect postgres

プロンプトや\conninfoで接続先がpostgresになったことを確認してから、学習用データベースだけを削除します。

DROP DATABASE ada_learning;

最後にpsqlを終了します。

\q

DROP DATABASEはデータベース内のテーブルとデータをまとめて削除する、取り消せない操作です。名前がada_learningであることを確認してから実行してください。

よくあるつまずき

psql: command not foundと表示される

PostgreSQLまたはpsqlが未導入か、実行ファイルへPATHが通っていません。OS向けの公式導入手順を確認し、ターミナルを開き直してください。

role "..." does not existと表示される

macOSの一部の導入方法はOSのユーザー名、Linuxの一部はpostgres、Windowsのインストーラーは設定したpostgresユーザーを使います。自分の導入方法で作られた初期ユーザーを確認してください。

connection refusedと表示される

PostgreSQLサーバーが起動していないか、ホストやポートが違います。サービスの起動状態を確認してください。既定ポートは通常5432です。

DROP DATABASE cannot be executed on the currently open databaseと表示される

まだada_learningへ接続しています。\connect postgresを実行し、\conninfoで接続先を確認してからやり直してください。

プロンプトがpostgres-#になった

SQLのセミコロンを忘れると、psqlは入力の続きを待ちます。\rで入力中のSQLを取り消してから、もう一度入力してください。

練習

後片付けの前に、ページ数が250以上の本だけを表示してみましょう。

SELECT title, pages
FROM books
WHERE pages >= 250
ORDER BY pages;

結果が1冊だけになる理由を、WHEREORDER BYの役割に分けて説明してみてください。

次のステップ

次は、SQLを1テーマずつ練習します。

コマンドをすぐ確認したい時は、PostgreSQLのチートシートも利用してください。

参考リソース

← 一覧に戻る
PR
PR
PR
PR