今回やること
PostgreSQLは、表の形でデータを管理するリレーショナルデータベース管理システムです。この記事では、付属のコマンドラインツールpsqlを使い、次の流れだけを試します。
- PostgreSQLへ接続する
- 学習用データベースとテーブルを1つ作る
- 3件のデータを追加して読み取る
- 学習用データベースを削除する
JOIN、更新、削除、インデックスなどは、別のPractice記事で1テーマずつ学びます。
PostgreSQLを準備する
2026年7月25日時点の現行安定版はPostgreSQL 18です。PostgreSQL 19はBeta段階のため、この学習では安定版を選んでください。
インストール方法と最初の接続方法はOSや配布元によって異なります。
| 環境 | 導入時の注意 | 代表的な接続例 |
|---|---|---|
| Windows | PostgreSQL公式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();
\conninfoはpsql専用の確認コマンドです。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_countが3なら、テーブル作成、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冊だけになる理由を、WHEREとORDER BYの役割に分けて説明してみてください。
次のステップ
次は、SQLを1テーマずつ練習します。
コマンドをすぐ確認したい時は、PostgreSQLのチートシートも利用してください。