14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】PostgreSQLメタコマンドとSQL*Plusの違い

14
Last updated at Posted at 2026-08-03

はじめに

今回PostgreSQLを学ぶにあたってメタコマンドというものが出てきたため、SQL*Plus(Oracle)との対応一覧表があったらいいなぁという思いからまとめてみました。
またメタコマンドだけでなく、よく使いそうor遭遇しそうな違いについても同時に記載しています。

目次

1. ツール起動と接続・終了
2. データベース・スキーマ情報、セッション情報の確認
3. SQL構文・関数の主な違い
4. 運用管理・その他
5.まとめ

コマンドに記載されている \ は¥マークと同じです

1. ツール起動と接続・終了

データベースへの接続と終了のコマンドです。

操作内容 PostgreSQL (psql) Oracle (SQL*Plus)
ツール起動と接続 psql -U ユーザ名 -d DB名 -h ホスト名 sqlplus ユーザ名/パスワード@ホスト:ポート/サービス名
ツールを終了する \q または exit exit または quit
ヘルプを表示する \? (psqlヘルプ) / \h (SQLヘルプ) help index

2. データベース・スキーマ情報、セッション情報の確認

オブジェクトの構造や一覧を確認するコマンドです。PostgreSQLはメタコマンド(\から始まるコマンド)を多用するのに対し、Oracleはデータディクショナリ(メタデータが格納されたビュー)を検索するのが基本です。

操作内容 PostgreSQL (psql) Oracle (SQL*Plus)
テーブル一覧を表示 \dt(display tablesの頭文字) SELECT table_name FROM user_tables;
ビュー一覧を表示 \dv(display viewsの頭文字) SELECT view_name FROM user_views;
テーブル定義を確認 \d テーブル名(describe [テーブル名]の頭文字) DESC テーブル名 または DESCRIBE テーブル名
インデックス一覧を確認 \di(display indexesの頭文字) SELECT index_name FROM user_indexes;
スキーマ/ユーザー一覧1 \dn(display namespacesの頭文字) SELECT username FROM all_users;
テーブルスペース一覧2 \db(databaseとtablespace の頭文字) SELECT tablespace_name FROM dba_tablespaces;
現在の接続情報を確認 \conninfo(connection informationの略) SHOW user / SELECT global_name FROM global_name;
データベース(インスタンス)一覧3 \lまたは\list (Oracleは基本1DBのため一覧取得の概念なし)
実行中のプロセス・セッション SELECT * FROM pg_stat_activity;(メタコマンドなし) SELECT * FROM v$session;

3. SQL構文・関数の主な違い

日常的に使うSQLや関数のうち、よく遭遇する違いです。

操作内容 PostgreSQL (psql) Oracle (SQL*Plus)
テーブルを伴わない値の取得 SELECT NOW();(FROM不要) SELECT SYSDATE FROM DUAL;(DUALが必要)
取得件数の制限 (Top N) SELECT * FROM tbl LIMIT 10; SELECT * FROM tbl FETCH FIRST 10 ROWS ONLY;(Oracle 12c以降)
NULLの置換 COALESCE(val, '代替')(引数3つ以上も可) NVL(val, '代替')(引数2つ) または COALESCE(引数3つ以上も可)
外部結合の特殊構文 左右結合(ANSI標準のみ) (+) 演算子(Oracle独自)も使用可能

Nullの取り扱いについて
Oracleでは自動的に空文字("")を nullに変換しますが、PostgreSQLでは空文字("")は「長さ0の文字列」、nullは「null」とそれぞれ別の値として扱われます。

4. 運用管理・その他

トランザクションの挙動や、外部ファイルの実行方法です。

操作内容 PostgreSQL (psql) Oracle (SQL*Plus)
外部SQLファイルの実行 \i ファイル名.sql(include [ファイル名]の頭文字) @ファイル名.sql または @@ファイル名.sql
自動コミット (デフォルト) ON(明示的に BEGIN が必要) OFF(明示的に COMMIT が必要)
コマンド結果をファイル出力 \o 出力先ファイル名(output[出力先ファイル名]の頭文字) SPOOL 出力先ファイル名 ~ SPOOL OFF

5. まとめ

よく使いそうなコマンドをまとめてみましたが、
ちょっと調べてみただけでも書き方が全然違って驚きました。
特にnullの扱いのあたりはつまずきポイントだと思うので、気を付けて使用したいです。
記載したもの以外にもたくさんのコマンドや違いがあると思うので、
慣れているツールと照らし合わせながら楽しんで覚えていけたらいいなと思います。

参考資料

SQL*Plus®ユーザーズ・ガイドおよびリファレンス リリース11.2
PostgreSQL 15.4文書

  1. Oracleでは「ユーザー=スキーマ」となります。

  2. 物理的な保存先の確認です。

  3. Oracleは基本的に1インスタンス1データベース(マルチテナント除く)の構造です。

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?