sqlplusコマンド チートシート

cheatsheet

接続と切断 🚪

データベースへの接続方法とセッションの終了方法について説明します。

目的コマンド形式説明
ユーザー名/パスワードで接続sqlplus username/password@connect_identifier指定したユーザー名、パスワード、接続識別子(TNS名など)を使用してデータベースに接続します。
対話形式で接続sqlplusSQL*Plusを起動し、ユーザー名、パスワード、接続識別子を順に尋ねられます。
OS認証で接続 (ローカル)sqlplus / as sysdbaOSユーザーが特定のDBAグループに属している場合、パスワードなしでSYSDBA権限で接続します(設定による)。/ はOS認証を示します。
OS認証で接続 (一般ユーザー)sqlplus /OSユーザー名に対応するOracleユーザーとして接続します (OPS$ユーザーなど、設定が必要)。
接続情報を隠して接続 (サイレントモード)sqlplus -S username/password@connect_identifier-Sオプションを使用すると、SQL*Plusのバージョン情報やプロンプトを表示せずに接続します。スクリプト実行時に便利です。
接続ユーザー変更CONNECT username/password@connect_identifier
または
CONN username/password@connect_identifier
現在のセッション内で別のユーザーまたは別のデータベースに再接続します。
現在の接続ユーザー表示SHOW USER現在接続しているユーザー名を表示します。
SQL*Plus 終了 (コミット)EXIT [COMMIT]SQL*Plusセッションを終了します。デフォルトではコミットが実行されます。終了コードを返すことも可能です (例: EXIT 1)。
SQL*Plus 終了 (ロールバック)EXIT ROLLBACK変更をロールバックしてSQL*Plusセッションを終了します。
SQL*Plus 終了 (エイリアス)QUITEXIT と同じ動作をします。デフォルトでコミットされます。
接続解除 (セッション維持)DISCONNECTデータベースから切断しますが、SQL*Plus自体は終了しません。再度 CONNECT コマンドで接続できます。

SQLとコマンドの実行 ⚙️

SQL文、PL/SQLブロック、およびSQL*Plusコマンドを実行する方法です。

目的コマンド/記号説明
SQL文の実行SELECT * FROM employees;SQL文を入力し、セミコロン(;)で終了してEnterキーを押すと実行されます。
SQLバッファ内のSQL実行/SQLバッファ(最後に実行または編集したSQL文)の内容を再実行します。
SQLバッファ内のSQL表示と実行RUNSQLバッファの内容を表示してから実行します。LISTコマンドと/コマンドの組み合わせに相当します。
スクリプトファイルの実行@ファイルパス/ファイル名.sql
または
START ファイルパス/ファイル名.sql
指定されたSQLスクリプトファイルの内容を実行します。パスが指定されない場合はカレントディレクトリまたはSQLPATH環境変数で指定されたディレクトリを探します。
PL/SQLブロックの実行
BEGIN
  -- PL/SQLコード
  DBMS_OUTPUT.PUT_LINE('Hello');
END;
/
PL/SQLブロックを入力し、最後にスラッシュ(/)を入力してEnterキーを押すと実行されます。SET SERVEROUTPUT ON が事前に必要になることが多いです。
OSコマンドの実行HOST os_command
または
!os_command (Unix/Linux)
$os_command (VMS)
SQL*Plusセッション内からオペレーティングシステムのコマンドを実行します。例: HOST dir (Windows), !ls -l (Linux)

出力フォーマットの調整 📊

クエリ結果や情報の表示形式をカスタマイズするための SET コマンド群です。

目的コマンド説明
行の折り返し幅設定SET LINESIZE 1201行に表示される文字数を設定します。これを超えると次の行に折り返されます。デフォルトは通常80です。
1ページの行数設定SET PAGESIZE 50ヘッダーが繰り返し表示されるまでの行数を設定します。0 を設定するとヘッダーは最初の1回だけ表示されます。
列ヘッダー表示/非表示SET HEADING ON | OFFクエリ結果の列見出しを表示するかどうかを制御します。HEADSEP で区切り文字も設定できます。
フィードバック表示/非表示SET FEEDBACK ON | OFF | nSQL文によって処理されたレコード数を表示するかどうかを制御します。n を指定すると、n 件以上のレコードが処理された場合にのみ表示されます。デフォルトは6件です。
実行コマンド表示/非表示SET ECHO ON | OFFスクリプトファイル(@ または START で実行)内のコマンドを表示するかどうかを制御します。デバッグ時に便利です。
置換変数表示/非表示SET VERIFY ON | OFF置換変数 (&&&) が置換される前後の値を表示するかどうかを制御します。
NULL値の表示文字列SET NULL ' (NULL) 'クエリ結果でNULL値がどのように表示されるかを指定します。
数値の表示形式SET NUMFORMAT 999,999.99数値データのデフォルト表示形式を設定します。COLUMN コマンドで列ごとに上書きできます。
列の表示フォーマット設定COLUMN column_name FORMAT A20 HEADING 'New Header'特定の列の表示形式(幅、数値フォーマット、折り返しなど)やヘッダーテキストを設定します。例: FORMAT A20 (文字列20文字), FORMAT 99,990.00 (数値), WORD_WRAPPED (単語単位で折り返し)。
列フォーマット解除COLUMN column_name CLEAR特定の列に設定されたフォーマットを解除します。
全列フォーマット解除CLEAR COLUMNSすべての列に設定されたフォーマットを解除します。
画面出力の有効/無効SET TERMOUT ON | OFFSQL*Plusからの画面出力を制御します。OFF にすると、SPOOL でファイルに書き込んでいる間、画面には何も表示されなくなります。

💡 特定の設定値を確認するには SHOW parameter (例: SHOW LINESIZE) を使用します。すべての設定を表示するには SHOW ALL を使用します。

SQLバッファと編集 📝

直前に実行または入力されたSQL文(SQLバッファ)を操作するためのコマンドです。

目的コマンド説明
SQLバッファの内容表示LIST
または
L
SQLバッファ内の現在のSQL文を行番号付きで表示します。
SQLバッファの特定行表示LIST n
または
L n
SQLバッファの n 行目をカレント行とし、表示します。
SQLバッファの行範囲表示LIST m n
または
L m n
SQLバッファの m 行目から n 行目までを表示します。
カレント行の末尾に追記APPEND text
または
A text
SQLバッファのカレント行の末尾に指定した text を追加します。
カレント行の文字列置換CHANGE /old/new/
または
C /old/new/
SQLバッファのカレント行で最初に見つかった old 文字列を new 文字列に置換します。区切り文字は / 以外も使用可能です。
カレント行の後に新しい行を挿入INPUT
または
I
SQLバッファのカレント行の後に新しい行を挿入します。続けて複数行入力できます。空行を入力すると入力モードを終了します。
カレント行の後にテキストを挿入INPUT text
または
I text
SQLバッファのカレント行の後に、指定した text を含む新しい行を挿入します。
カレント行を削除DELSQLバッファのカレント行を削除します。
行範囲を削除DEL m nSQLバッファの m 行目から n 行目までを削除します。
外部エディタでバッファ編集EDIT
または
ED
_EDITOR 環境変数(またはDEFINEコマンド)で指定された外部テキストエディタを起動し、SQLバッファの内容を編集します。編集後、エディタを終了すると変更がバッファに反映されます。
SQLバッファのクリアCLEAR BUFFERSQLバッファの内容を消去します。

スクリプトと変数 📜

スクリプト内で使用する変数や対話的な入力を扱うためのコマンドです。

目的コマンド説明
ユーザー変数の定義DEFINE variable_name = valueユーザー変数(置換変数)を定義します。値は文字列として扱われます。DEFINEのみで定義済み変数一覧を表示します。
ユーザー変数の定義解除UNDEFINE variable_name指定したユーザー変数の定義を解除します。
ユーザーからの入力受付ACCEPT variable_name [PROMPT 'message'] [HIDE]ユーザーに入力を促し、入力された値を指定した変数に格納します。PROMPTでメッセージ表示、HIDEで入力内容を隠します(パスワード入力用)。
置換変数 (毎回置換)&variable_nameSQL文やコマンド内で使用すると、variable_name の値に置換されます。変数が未定義の場合、入力を求められます。数値や文字列リテラル内で使用する場合は注意が必要です。文字列リテラルでは '&variable_name' のように引用符で囲みます。
置換変数 (初回のみ置換)&&variable_name& と似ていますが、変数が未定義の場合に最初に入力を求められた後、そのセッション中は同じ変数に対して再度入力を求められません(DEFINEされた状態になります)。
画面へのメッセージ表示PROMPT message text指定したメッセージを画面に出力します。スクリプトの進行状況を示すのに便利です。
スクリプトの一時停止PAUSE [message text]スクリプトの実行を一時停止し、指定したメッセージを表示します。ユーザーがEnterキーを押すと再開します。
出力結果のファイル保存開始SPOOL file_path/filename.txtこれ以降の画面出力を指定したファイルに書き込みます。
出力結果のファイル保存終了SPOOL OFFファイルへの書き込みを終了します。
スクリプト引数の利用@script.sql arg1 arg2 ...
スクリプト内: &1, &2, …
スクリプト実行時に引数を渡し、スクリプト内で &1, &2 のように参照できます。

環境設定と情報表示 ⚙️📊

SQL*Plusの動作環境を調整したり、情報を表示したりするコマンドです。

目的コマンド説明
SQL実行時間表示SET TIMING ON | OFF各SQL文の実行時間を表示するかどうかを制御します。パフォーマンス測定に役立ちます。
DBMS_OUTPUT.PUT_LINE の表示SET SERVEROUTPUT ON | OFF [SIZE n] [FORMAT WRAPPED | WORD_WRAPPED | TRUNCATED]PL/SQLの DBMS_OUTPUT.PUT_LINE による出力を画面に表示します。SIZEでバッファサイズ(デフォルト20000、最大1,000,000)、FORMATで折り返し方法を指定できます。
実行計画と統計情報表示SET AUTOTRACE ON | OFF | TRACEONLY [EXPLAIN] [STATISTICS]SQL文の実行後に実行計画や統計情報を自動的に表示します。TRACEONLY はSQL結果を表示せず計画/統計のみ表示。EXPLAIN は計画のみ、STATISTICS は統計のみ。実行には特定の権限が必要です。
SQLプロンプトの変更SET SQLPROMPT 'MyPrompt> 'SQL*Plusのコマンドプロンプト文字列を変更します。_USER_CONNECT_IDENTIFIER といった変数を埋め込めます (例: SET SQLPROMPT '_USER@_CONNECT_IDENTIFIER> ')。
オブジェクト構造の表示DESCRIBE object_name
または
DESC object_name
テーブルやビューの列定義、プロシージャ/ファンクションの引数などのオブジェクト構造を表示します。
SQL*Plus環境設定の表示SHOW parameter
例: SHOW ALL, SHOW LINESIZE, SHOW USER
指定したSQL*Plusの環境設定パラメータの現在の値を表示します。ALL ですべての設定を表示します。
エラー発生時の動作設定 (SQL)WHENEVER SQLERROR EXIT [SQL.SQLCODE | n] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]SQLエラーが発生した場合の動作を設定します。EXIT で SQL*Plus を終了(オプションで終了コード指定、コミット/ロールバック指定可)、CONTINUE で処理を続行(オプションでコミット/ロールバック指定可)。
エラー発生時の動作設定 (OS)WHENEVER OSERROR EXIT [n] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]OSエラー(ファイルアクセスエラーなど)が発生した場合の動作を設定します。WHENEVER SQLERROR と同様のオプションが指定可能です。
SQL*Plus コマンドのヘルプ表示HELP [command | topic]SQL*Plusコマンドやトピックに関するヘルプ情報を表示します(システムにヘルプがインストールされている場合)。例: HELP SET, HELP SELECT

コメント

タイトルとURLをコピーしました