PostgreSQL は、オープンソースのリレーショナルデータベース管理システム(RDBMS)です。カリフォルニア大学バークレー校の POSTGRES というプロジェクトが元になっていて、SQL に対応したときに今の名前になりました。特定の企業ではなく、世界中の開発者が参加する PostgreSQL Global Development Group が開発しています。
読み方
公式サイトの FAQ では、発音は「post-GRES-que-ell」とされています。カタカナにすると「ポストグレス・キュー・エル」です。公式サイトには発音の音声ファイルも置かれています。
略して「Postgres(ポストグレス)」と呼ぶことも公式に認められています。日本では「ポスグレ」と呼ぶことも多いです。
バージョンの決まり方
- メジャーバージョン(17、18 など)は、およそ年1回、秋に出る
- マイナーバージョン(17.6 の「.6」)は少なくとも3か月に1回出て、修正だけを含む
- 各メジャーは初回リリースから5年サポートされる
2026年10月時点の最新メジャーは PostgreSQL 18 で、サポート中は 14〜18 です。14 は 2026年11月12日にサポートが終わります。確認方法と各バージョンの期限は PostgreSQLのバージョン確認 にまとめています。
MySQL から来た人が戸惑う点
SQL の基本は同じですが、管理用のコマンドや一部の関数は書き方が違います。この記事で示す動作は PostgreSQL 17.6 で確かめたものです。
| やりたいこと | MySQL | PostgreSQL(psql) |
|---|---|---|
| データベース一覧 | SHOW DATABASES; |
\l |
| データベースを切り替える | USE db; |
\c db |
| テーブル一覧 | SHOW TABLES; |
\dt |
| テーブル定義 | DESCRIBE t; |
\d t |
| 結果を縦に表示 | \G |
\x |
| NULL の置き換え | IFNULL(a, b) |
COALESCE(a, b) |
SHOW TABLES; や DESCRIBE t; を PostgreSQL で実行すると、構文エラーになります。
もう1つ大きく違うのがスキーマです。PostgreSQL では、データベースの中にスキーマがあり、表はスキーマの中にあります。何も指定しなければ public スキーマに作られます。1つの接続は1つのデータベースにしかつながらないので、まとめて扱いたい表は同じデータベースの中でスキーマを分けて置きます。MySQL の「データベース」は、PostgreSQL のスキーマに近いものです。