みふのレポートです。
Oracle SQL*Plus の使い方をまとめてみました。
(当記事は『 DB Magazine 』 2002 年 1 月号を参考にさせていただきました。)
■ SQL*Plus の起動方法
■ SQL*Plus で実行できるコマンド
SQL*Plus から実行できるコマンドは次の3種類です。
■ SQL 文
SQL 文を実行するには、SQL 文の文末または改行後にセミコロン(;)を入力するか、改行後にスラッシュ(/)を入れます。
SQL> select * from emp;
または
SQL> select * from emp
2 /
■ PL/SQL ブロック
PL/SQL とは、SQL を機能拡張したプロシージャ型言語です。
PL/SQL ブロックを実行するときは、スラッシュ(/)を使用します。
(SQL 文と異なり、セミコロン(;)は文の終結文字として扱われます)。
PL/SQL を実行せずに終了する場合は、ピリオド(.)を入力します。
■ SQL*Plus コマンド
SQL*Plus コマンドは SQL*Plus 内でのみ使用可能なコマンドです。
実行する際にセミコロン(;)を入力する必要はありません。
■ SQL*Plus コマンド
SQL> DESC[RIBE] オブジェクト名
指定したオブジェクト(テーブル、ビュー、PL/SQL プロシージャなど)の定義を表示させることができます。
SQL> CONN[ECT] ユーザ名/パスワード
接続しているユーザーを変更したい場合などに使います。
SQL*Plus を終了させずに別のユーザーとして接続しなおすことができます。
SQL> SHO[W] システム変数
または
SQL> SHO[W] ALL
SQL*Plus のシステム変数情報を表示するコマンドです。
引数として "USER" を指定することで、どのユーザーが接続しているのかを表示させることができます。
引数として "ALL" を指定するとすべてのシステム情報を表示させることができます。
SQL> SET システム変数名 設定する値
SET コマンドは、システム変数の値を変更するためのコマンドです。
システム変数の値を変更することで、SQL*Plus のさまざまな設定を変更することができます。
SQL> SET LINES[IZE] [80|nn]
SQL*Plus のデフォルトの1 行の最大表示長は 80 バイトです。
レコードの長さが 80 バイトを超えると改行されてしまい、見づらくなってしまいます。
LINESIZE を変更することで 1 行の最大表示長を変えることができます。
SQL> SET NUM[WIDTH] [10|nn]
NUMWIDTH を変更することで NUMBER 型列の表示幅を一括して変更することができます。
LINESIZE を変更してもレコードが 1 行に収まらない場合に使用すると便利です。
SQL> SET PAGES[IZE] 24|nn
SQL*Plus では、PAGESIZE で指定された行数を 1 ページとして扱います。
デフォルト値は 24 行です。
列数が多いテーブルを参照するときは PAGESIZE の値を大きくすると見やすくなります。
PAGESIZE を 0 に設定すると列名の表示、ページ単位の空白行、PAUSE を抑制することができます。
SQL> SET PAU[SE] ON|OFF
PAUSE を ON に変更することで 1 ページごとに検索結果を確認できるようになります。
PAUSE は端末スクロール制御を行うためのシステム変数です。
SQL> SET LONG [80|n]
LONG 型の場合、表示幅以上の部分は切り捨てられてしまいます。
(CHAR 型や VARCHAR2 型、DATE 型の場合は折り返して複数行で表示されます)。
LONG 型をすべて表示するには LONG 変数を変更し、データを表示するのに充分な長さを指定します。
SQL> COL[UMN] 列名 HEA[DING] 文字列 FOR[MAT] 書式 ←設定
SQL> COL[UMN] 列名 CL[EAR] ←特定列のみ
SQL> CL[EAR] COL[UMNS] ←クリア(すべて)
SQL> COL[UMN] 列名 ←確認
SQL> COL[UMN] ←確認(すべて)
使用例:
SQL> col empno hea 社員|番号 for 9999
NUMBER 型を 4 桁で表示する場合、FORMAT 句で 9999 を指定します。
文字列「社員」と「番号」の間にはバーティカルバー(|)で改行を入れています。
(HEADSEP システム変数を変更することでバーティカルバー(|)以外の文字を改行文字に指定することもできます)。
SQL> col ename hea 社員名 for a8
VARCHAR2 型や CHAR 型のようなキャラクタ型の場合は a[n] のように "a" に続けてバイト数を指定します。
SQL> col comm hea 歩合給 for 999G999D99
comm 列の列名を "歩合給" に、3 桁ごとにカンマ区切りをつけて小数点第 2 位まで表示します。
G を指定した部分にカンマ、D を指定した部分に小数点が表示されます。
■ SQL バッファとスラッシュ(/)
SQL*Plus では、SQL 文や PL/SQL ブロックが入力されると、 SQL バッファと呼ばれる領域に格納されます。
スラッシュ(/)は、SQL バッファに格納されている文を実行するためのコマンドです。
スラッシュ(/)を入力することで、直前に入力した SQL 文や PL/SQL を何度でも再実行することができます。
■ SQL バッファにデータを読み込む
SQL*Plus から、SQL 文または PL/SQL ブロックを入力すると、入力した文は自動的に SQL バッファに格納されます。
また、GET コマンドで既存の SQL スクリプトファイルを明示的に読み込むことも可能です。
バッファに格納された文はスラッシュ(/)または RUN コマンドによって実行することができます。
SQL> GET ファイル名
既存のファイルの読み込みを行います。
■ SQL バッファの内容の編集
エディタを使用する方法と SQL*Plus コマンドを使用する方法があります。
SQL> ED[IT]
EDIT コマンドはファイル名を引数にして実行することも可能です。
指定されたファイルが存在する場合はそのファイルを開き、存在しない場合はファイルが新規に作成されます。
SQL> DEFINE_EDITOR=C:\PROGRAM FILES\HIDEMARU.EXE ← Windows で秀丸エディタに変更する場合。
LIST コマンドで、現在 SQL バッファに格納されている SQL 文を表示させることができます。
行頭に "*" が表示されているのが編集対象となる行です。
(デフォルトでは最終行が編集対象行となります。)
SQL> l
1 select *
2 emp
3* where deptno=20
編集対象行を変更するには編集したい行の行番号を入力します。
SQL> l 1
1* select *
もしくは
SQL> 1
1* select *
行の挿入は、INPUT コマンドを使用します。
SQL> 1
1* select *
SQL> i from
SQL> l
1 select
2 from
3 emp
4* where deptno=20
行の削除は、DEL コマンドを使用します。
引数を指定せずに DEL コマンドを実行した場合には編集対象行が、
引数として行番号を指定した場合には指定した行が削除されます。
文字列を追加するには APPEND コマンドを使用します。
SQL> APPEND 文字列
SQL> C/対象文字列/置換文字列
区切り文字にはスラッシュ(/)だけでなく、シャープ(#)などの任意の非英数字文字も使用することができます。
SQL> SAV[E] 保存ファイル名 [ CRE[ATE] | REP[LACE] | APP[END] ]
SQL バッファの内容をファイルに保存します。
保存ファイルの指定はファイル名でもフルパスでも構いません。
(ファイル名のみを指定した場合、ファイルは作業ディレクトリに作成されます。)
ファイルの拡張子を省略した場合、 ".sql" が自動的に付加されます。
ショートカットのプロパティで作業フォルダを表示・変更させることができます。
■ SQL スクリプトファイルの呼び出し
ファイルに保存した SQL スクリプトファイルを実行するには、 START コマンドを使用する方法と、アットマーク(@)コマンドを使用する方法があります。
SQL> START スクリプトファイル名
START コマンドの引数にファイル名を指定すると、指定したファイルの内容を実行できます。
SQL> @ スクリプトファイル名
SPOOL コマンドを使用します。