DBMSごとの独自のSQLコマンドについてまとめています。
SQLコマンド は共通SQLコマンドとDBMS独自コマンドがある
SQLコマンドにはSQL規格で定義されているDMBS共通で使用できるSQLコマンドと、DBMS独自のコマンドがあります。共通SQLコマンドはデータの検索、追加、更新、削除を行なうことができます。
【関連記事】
▶SQL コマンド 一覧 検索、追加、更新、削除からバックアップ・リストアまで
DBMS独自のSQLコマンドは、SQLの結果出力の形式変更や、データベースへの接続、インスタンスの起動・停止やバックアップ・リストアなどDBMSによって大きくことなります。
当記事では、主要DBMSの独自のコマンドを紹介します。
OracleのSQLコマンド
Oracleのコマンドラインインタフェース、SQL*Plusには、結果出力の方式を変更したり、データベースへの接続、インスタンスの起動、停止などを行なうSQLコマンドがあります。以下は、select文の出力形式を変更するSQLコマンドの例です。
COLUMN JOB_ID NOPRINT NEW_VALUE JOBVAR COLUMN TODAY NOPRINT NEW_VALUE DATEVAR BREAK ON JOB_ID SKIP PAGE ON TODAY TTITLE CENTER 'Job Report' RIGHT DATEVAR SKIP 2 - LEFT 'Job: ' JOBVAR SKIP 2 SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY') TODAY, LAST_NAME, JOB_ID, MANAGER_ID, HIRE_DATE, SALARY, DEPARTMENT_ID FROM EMPLOYEES WHERE JOB_ID IN ('MK_MAN', 'SA_MAN') ORDER BY JOB_ID, LAST_NAME;
- COLUMN 特定の列の表示特性を指定したり、1つまたはすべての列の現行の表示特性を表示します。
- BREAK レポート内で書式設定を変更する場合の場所と方法を指定したり、現行のブレーク定義を表示します。
- TTITLE 各レポート・ページの上部に、指定したタイトルを配置して書式設定したり、現行のTTITLE定義を表示します。
【関連記事】
▶SQL*Plusコマンド一覧と使い方まとめ
SQL ServerのSQLコマンド
SQL ServerのコマンドラインsqlcmdユーティリティのSQLコマンドの一覧。SQLの実行がGOである点が他のDBMSと比べて異なり、実行回数の指定も可能です。SQL Serverでは、SQLの実行結果をXML形式で出力するコマンドがあります。
- GO [count] 実行回数を指定して実行
- :List ステートメントキャッシュ(SQLの実行用バッファ)の内容を表示
- [:] RESET ステートメントキャッシュをクリア
- :Error エラー出力先を指定します。ファイル以外に標準出力(STDOUT)、標準エラー出力(STDERR)が指定可能
- [:] ED テキストエディターを開始します。
- :Out すべてのクエリ結果の出力先を指定。ファイル以外に標準出力(STDOUT)、標準エラー出力(STDERR)が指定可能
- [:] !! OSのコマンドを実行
- :Perftrace パフォーマンストレース情報の出力先を指定。ファイル以外に標準出力(STDOUT)、標準エラー出力(STDERR)が指定可能
- [:] QUIT sqlcmdを終了
- :Connect SQLサーバのインスタンスに接続
- [:] EXIT 戻り値を指定してsqlcmdを終了
- :On Error エラー発生時に実行するアクションを設定
- :r 指定したファイルをステートメントキャッシュに登録。ファイル内にはSQLやsqlcmdコマンドが使用可能。
- :Help コマンドの使い方の一覧表示
- :ServerList ローカルのサーバとネットワーク上のサーバ名の一覧を表示
- :XML [ON | OFF] 出力形式をXML形式に切り替える
- :Setvar sqlcmd スクリプト変数を定義します。 スクリプト変数は $(VARNAME)という形式になります。
- :Listvar 現在設定されているスクリプト変数の一覧を表示します。
参考)sqlcmd ユーティリティ – SQL Server | Microsoft Docs
MySQLのSQLコマンド
MySQLのコマンドラインインタフェースmysqlで使用可能なSQLコマンドです。各コマンドにバックスラッシュから始まる短縮形が用意されています。
- ? (\?) helpコマンドの別名
- clear (\c) コマンドをクリアする
- connect (\r) サーバに再接続する。サーバホスト名とデータベースの指定が可能
- delimiter (\d) 実行ステートメントのデリミタを設定する
- edit (\e) エディタを起動。環境変数$EDITORで起動エディタを指定可能
- ego (\G) 現在のステートメントを、実行するためにサーバーに送信し、結果を縦の形式で表示します。
- exit (\q) mysql を終了します。
- go (\g) 現在のステートメントを、実行するためにサーバーに送信します。
- help (\h) ヘルプを表示
- nopager (\n) 出力のページングを無効にする
- notee (\t) ファイルへの出力を停止
- pager (\P) 結果表示時のページ送り(PAGER)を指定。
- print (\p) 現在のコマンドを表示
- prompt (\R) プロンプトを変更する
- quit (\q) mysqlコマンドを終了
- rehash (\#) ステートメントの入力中にデータベース、テーブル、およびカラムの名前補完を可能にする補完ハッシュを再構築します。
- source (\.) 指定されたファイルを読み取り、その中に含まれているステートメントを実行します。Windows では、パス名区切り文字を / または \\ に指定できます。
- status (\s) 使用中の接続とサーバーに関するステータス情報を表示
- system (\!) オペレーションシステムのコマンドを実行
- tee (\T) ログ出力をオンにする。オプションでログファイル名の指定が可能
- use (\u) データベースの切り替え。
- charset (\C) デフォルトの文字セットを切り替える(SET NAMESステートメントを発行)
- warnings (\W) 警告表示を有効にする
- nowarning (\w) 警告表示を無効にする
参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.1.2 mysql コマンド
PostgreSQLのSQLコマンド
SQL以外に、psql独自のメタコマンドが用意されています。メタコマンドはバックスラッシュから始まります。他のDBMSと違い、テーブルなどのデータオブジェクトの一覧や詳細を表示するコマンドがメタコマンドで用意されています。
以下は、テーブル一覧を表示した後、テーブルactorの詳細を表示して、psqlコマンドを終了する例です。
dvdrental=# \dt List of relations Schema | Name | Type | Owner --------+---------------+-------+---------- public | actor | table | postgres public | address | table | postgres public | category | table | postgres public | city | table | postgres public | country | table | postgres public | customer | table | postgres public | film | table | postgres public | film_actor | table | postgres public | film_category | table | postgres public | inventory | table | postgres public | language | table | postgres public | payment | table | postgres public | rental | table | postgres public | staff | table | postgres public | store | table | postgres (15 rows) dvdrental=# \d actor Table "public.actor" Column | Type | Modifiers -------------+-----------------------------+--------------------------------- ------------------------- actor_id | integer | not null default nextval('actor_ actor_id_seq'::regclass) first_name | character varying(45) | not null last_name | character varying(45) | not null last_update | timestamp without time zone | not null default now() Indexes: "actor_pkey" PRIMARY KEY, btree (actor_id) "idx_actor_last_name" btree (last_name) Referenced by: TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (act or_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT Triggers: last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE PROCEDURE last_u pdated() dvdrental=# \q
- \dt テーブル一覧を表示
- \d 指定したテーブル、ビュー、インデックス、シーケンスについて、全ての列、列の型、属性、関連づけられたインデックス、制約、ルール、トリガを表示
- \q psqlコマンドを終了する
まとめ
- SQLコマンドにはSQL規格で定義されたものと、DBMS独自のコマンドがある
- SQL Serverのsqlcmdのコマンドは他のDBMSに比べてやや機能が乏しい
- postgreSQLのpsqlのコマンドは、データベースオブジェクト管理用のメタコマンドが用意されている