ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

# 第1章
SQL構文の概要

SQL（Structured Query Language）は、リレーショナル・データベースのデータ定義およびデータ操作言語です。SQLを使用すると、データベースを構成するデータ定義（スキーマ）を作成し、データベースへデータを格納し、データとデータ定義を更新できます。

ほとんどの主要ベンダーが、リレーショナル・データベース製品用に様々なSQLを提供しています。このため、多くの場合、SQLは様々なベンダーのリレーショナル・データベース製品を使用したサイトで優先的に使用されるインタフェースとなっています。このOracle Rdbドキュメント・セットでは、SQLは、一般的にANSI/ISO SQL規格と呼ばれる、SQL規格ANSI/ISO/IEC 9075-1:1999のOracle Rdb実装を指しています。Oracle Rdbは、ANSI/ISO SQL規格の大半の必須部分に準拠しています。Oracle Rdbで現在サポートされていないSQL:1999 CORE機能のリストは、Rdbのリリース・ノートを参照してください。

リレーショナル・データベース構成では、データは2次元形式（SQLでは表と呼ばれる）で表されます。リレーショナル・データベースにおける表は、印刷された表に類似しています。SQL用語では、表は行と列の組合せで構成されています。列には通常名前が付けられ、列によって各行が分割され、データの個々の要素の集まりとなります。

# 1.1 SQLの使用

SQL文は、次の2つの方法で使用できます。

- 対話型
  対話型SQLを使用すると、SQL文が機能するしくみについて学習し、自分のデータ操作文をテストして、問合せを実行できます。
  次のコマンドを使用して、対話型SQLを起動します。

      $ ! Define a symbol for SQL:
      $ SQL$ == $SQL$
      $ ! Invoke SQL:
      $ SQL$

  以前のバージョンのRdbでは、対話型SQLでのキーワード略称とキーワード一致では、想定したキーワードが接頭辞と一致した場合に、余分な文字がトークンから破棄されていました。これは混乱を招く場合があったため、現在の対話型SQLでは情報メッセージが生成され、置換が明確に示されます。
  次の例は、余分な文字がキーワードから切り捨てられた場合に生成される情報メッセージを示します。

      SQL> create trigger mytrigger
      cont>     after updatete on mytable2
      %SQL-I-SPELLCORR, identifier UPDATETE replaced with UPDATE
      cont>     (insert into mytable values (mytable2.a, 'Any', 'Value'))
      cont>     for each row;

- 高水準言語プログラム
  アプリケーション・プログラムでは、対話型で使用したものと同じ文を使用できます。次の2つの方法で文を使用できます。

  - ホスト言語プログラムに文を直接埋め込み、そのプログラムをSQLプリコンパイラで処理します。

  - SQL文を含むSQLモジュール・ファイルを作成し、そのファイルをSQLモジュール・プロセッサでコンパイルします。高水準言語プログラムでは、SQLモジュールとそのコール・プロシージャをリンクして、SQL文を実行できます。
    SQLプリコンパイラと比較した場合のモジュール言語の利点の詳細は、第3章を参照してください。

  いずれの方法でも、わずかな調整のみで、対話型SQLを使用して端末で開発した文をプログラムに組み込むことができます。第3章では、SQLモジュール・プロセッサの起動方法について説明し、第4章では、SQLプリコンパイラの起動方法について説明します。

第1.4節では、SQLでの実行可能文と非実行可能文の区別について説明します。第1.5節の表1-1では、SQL文およびSQLの実行可能文について要約しています。

## 1.1.1 SQLイメージの起動

RDB$SETVER.COMファイルを実行すると、Oracle Rdbプリコンパイラおよび対話型ユーティリティで使用するグローバルなコマンド言語記号を定義できます。このコマンド・プロシージャは、特にOracle Rdbのマルチバージョン・キットで便利です。

次のSQL記号が定義され、標準環境とマルチバージョン環境の両方で有効になります。

- SQL$ == "$SQL$"

- SQL$PRE == "$SQL$PRE"

- SQL$MOD == "$SQL$MOD"

これらの記号を定義するには、次を入力します。

    $ @SYS$LIBRARY:RDB$SETVER RESET

RDB$SETVER.COMおよび対応するRDB$SHOVER.COMの詳細は、Oracle Rdbのインストレーションおよび構成ガイドを参照してください。

# 1.2 サンプル・ディレクトリ

インストール時に、SQLによって様々な言語の多数のサンプル・プログラムがシステムのサンプル・ディレクトリにインストールされます。このディレクトリには、サンプル・データベースを作成するためのコマンド・プロシージャまたはスクリプトも含まれます。

このサンプル・ディレクトリは、論理名SQL$SAMPLEによって定義されます。

# 1.3 構文図の読み方

このマニュアルでは、構文図を使用してSQL文の形式を示します。構文図は、SQL文のオプション、必須および反復の特性をグラフィカルに表します。SQL文の構文図を読むことによって、文の構文について学習できます。

構文図は左上隅から読み始め、矢印に従って進み、右下隅で終わります。パスの分岐では、該当するオプションを含む分岐を選択します。オプションを省略する場合は、言語要素が含まれていないパスを選択します。図に2つ以上の水平線がある場合、矢印は各線の終端で下に曲がり、左の余白に続きます。構文図には次のものを含めることができます。

- 他の構文図の名前
  図に名前が付けられている場合、その名前が図の上および左側に小文字で表示されます。構文図は、名前によって相互に参照できます。等号記号（=）は、名前がその図と同じであり、他の図にその名前が出現した場合はその図と置換可能であることを示しています。このような置換は、構文要素の列名が表示される列への列名の配置に類似しています。

- キーワード
  キーワードは大文字で表示されます。キーワードに下線が引かれている場合は、そのキーワードをSQL文に含める必要があります。下線が引かれていないキーワードはオプションです。オプションのキーワードを使用すると、文をより読みやすくできます。オプションのキーワードの場合、省略しても含めてもSQL文に影響はありません。

- 記号
  記号は、コマンドまたは文の構文で必要な場合に図に含まれます。たとえば、セミコロン（;）は、終了記号が必要な文における文の終了記号です。

- ユーザー指定の要素
  ユーザー指定の要素は、構文図に小文字で表示され、山カッコ（< >）で囲まれています。これらの要素には、名前、式、リテラルなどがあります。図1-1のcursor-nameのように、ユーザー指定の要素が図のメイン・ライン上に表示される場合は、その要素のかわりに値を指定する必要があります。
  テキストでは、ユーザー指定の要素は小文字のみで表示されます。

図1-1は、SQL FETCH文の構文図を示しています。

図1-1 サンプルの構文図（FETCH）

第6章のSQL文の説明は、構文図に沿って記述されています。この説明は引数リストとして示されており、リストの各エントリは構文図の対応する要素を示しています。次のリストは引数リストの形式になっていますが、引数の意味ではなく、構文図の表記規則を示しています。

## 引数

> ### FETCH

> 図のメイン・ライン上に、大文字で下線が引かれて表示されます。したがって、このキーワードは必ず指定する必要があります。

> ### cursor-name

> ### parameter

> 図のメイン・ライン上に、小文字で山カッコに囲まれて表示されます。したがって、cursor-nameまたはparameterのかわりに値を指定する必要があります。このマニュアルでは、カーソル名などのユーザー指定の名前やパラメータに関する詳細は、第2章を参照してください。構文図に沿って説明されている引数リストについては、説明の重複を回避するため、第2章を参照します。

> ### INTO

> オプションです。ただし、この分岐を選択した場合は、このキーワードを指定する必要があります。

> ### parameter

> ### qualified-parameter

> ### variable

> 分岐上に小文字で山カッコに囲まれて表示されます。このキーワードは常に空の分岐と並行しているため、パラメータと変数はオプションです。下位の図によって、パラメータの定義が拡張されます。

> ### comma

> リバース・ループ上に表示されます。リバース・ループは、複数のパラメータや変数を含めることができることを示します。複数のパラメータや変数を含める場合は、カンマで区切ります。

> ### parameter

> メインの分岐上に小文字で山カッコに囲まれて表示されます。パラメータはオプションですが、含める場合は、それぞれにメイン・パラメータを含める必要があります。インジケータ・パラメータとキーワードINDICATORはオプションです。

小文字のすべての語句が、図に沿った引数リストで説明されます。一部の説明では、このマニュアルの他の図を参照するように指示されています。

# 1.4 実行可能文および非実行可能文

SQLでは、ホスト言語プログラム、動的SQLおよび対話型SQLで実行可能文と非実行可能文が区別されます。

- ホスト言語プログラムでは、非実行SQL文とは、プログラムのプリコンパイル時またはSQLモジュールのコンパイル時にSQLによって完全に処理される文のことです。実行SQL文も、プリコンパイル時またはモジュールのコンパイル時に処理されますが、プログラムが実行されるまでは実行されません。
  次の文は、ホスト言語プログラムに埋め込まれているか、またはSQLモジュールに組み込まれている場合は非実行可能文です。

  - BEGIN DECLARE（プリコンパイルされたプログラムのみ）

  - DECLARE TRANSACTION

  - DECLARE ALIAS

  - DECLARE STATEMENT

  - DECLARE TABLE

  - DECLARE CURSOR

  - END DECLARE（プリコンパイルされたプログラムのみ）

  - INCLUDE（プリコンパイルされたプログラムのみ）

  - WHENEVER（プリコンパイルされたプログラムのみ）

- 動的SQLでは、次の文は非実行可能文です。

  - DECLARE TRANSACTION

  動的SQLでの非実行可能文は、SQLによってその非実行可能文に対してPREPARE文が処理されると有効になります。動的SQLでの非実行可能文に対するEXECUTE文の発行は有効ですが、何も処理されません。

- 対話型SQLでは、次の文は非実行可能文です。

  - DECLARE TRANSACTION

  - DECLARE CURSOR

  対話型SQLでの非実行可能文とは、文によって制御される操作が、実行可能文を入力するまでは発生しないことを意味しています。たとえば、DECLARE TRANSACTION文で定義しているトランザクションは、SELECTなどのデータ操作文または定義文を入力するまで開始されません。同様に、DECLARE CURSOR文で定義している結果表は、OPEN文を入力するまで作成されません。

# 1.5 SQL文の要約

表1-1は、SQL文が許可および処理される環境でのすべてのSQL文を示しています。この表では、特に各文で次のことが可能かどうかを示しています。

- 対話的に発行できるかどうか

- プリコンパイル対象のホスト言語プログラムに埋め込むことができるかどうか

- SQLモジュール言語ファイルの一部として使用できるかどうか

- 実行時の動的実行のためにプログラムに指定できるかどうか

- SQLの実行可能文として処理できるかどうか

- 単一文と複合文の両方に含めるか（S/C）、単一文のみに含めるか（S）、または複合文のみに含めるかどうか（C）

特定の環境での文の使用の詳細（制限に関する情報など）は、第6章を参照してください。

表1-1 SQL文の要約
文 | 対話型 | プリコンパイル | モジュール言語 | 動的に実行可能 | 実行可能 | 単一または複合
--- | --- | --- | --- | --- | --- | ---
ACCEPT | X |  |  |  | X | S
ALTER CONSTRAINT | X | X | X | X | X | S
ALTER DATABASE | X | X | X | X | X | S
ALTER DOMAIN | X | X | X | X | X | S
ALTER FUNCTION | X | X | X | X | X | S
ALTER INDEX | X | X | X | X | X | S
ALTER MODULE | X | X | X | X | X | S
ALTER PROCEDURE | X | X | X | X | X | S
ALTER PROFILE | X | X | X | X | X | S
ALTER OUTLINE | X | X | X | X | X | S
ALTER ROLE | X | X | X | X | X | S
ALTER SEQUENCE | X | X | X | X | X | S
ALTER SYNONYM | X | X | X | X | X | S
ALTER STORAGE MAP | X | X | X | X | X | S
ALTER TABLE | X | X | X | X | X | S
ALTER TRIGGER | X | X | X | X | X | S
ALTER USER | X | X | X | X | X | S
ATTACH | X | X | X | X | X | S
BEGIN DECLARE |  | X |  |  |  | S
CALL | X | X | X | X | X | S/C
CASE | X | X | X | X | X | C
CLOSE | X | X | X |  | X | S
COMMENT ON | X | X | X | X | X | S
COMMIT | X | X | X | X | X | S/C
複合文 | X | X | X | X | X | S/C
CONNECT | X | X | X | X | X | S
CREATE CATALOG | X | X | X | X | X | S
CREATE COLLATING SEQUENCE | X | X | X | X | X | S
CREATE DATABASE | X | X | X | X | X | S
CREATE DOMAIN | X | X | X | X | X | S
CREATE FUNCTION | X | X | X | X | X | S
CREATE INDEX | X | X | X | X | X | S
CREATE MODULE | X | X | X | X | X | S
CREATE OUTLINE | X | X | X | X | X | S
CREATE PROCEDURE | X | X | X | X | X | S
CREATE PROFILE | X | X | X | X | X | S
CREATE ROLE | X | X | X | X | X | S
CREATE SCHEMA | X | X | X | X | X | S
CREATE SEQUENCE | X | X | X | X | X | S
CREATE STORAGE MAP | X | X | X | X | X | S
CREATE SYNONYM | X | X | X | X | X | S
CREATE TABLE | X | X | X | X | X | S
CREATE TRIGGER | X | X | X | X | X | S
CREATE USER | X | X | X | X | X | S
CREATE VIEW | X | X | X | X | X | S
DECLARE ALIAS |  | X | X |  |  | S
DECLARE CURSOR | X | X | X |  |  | S
動的DECLARE CURSOR |  | X | X |  |  | S
拡張動的DECLARE CURSOR |  | X | X |  | X | S
DECLARE FUNCTION | X |  |  | X | X | S
DECLARE LOCAL TEMPORARY TABLE | X |  |  | X | X | S
DECLARE MODULE |  | X |  |  |  | S
DECLARE PROCEDURE | X |  |  | X | X | S
DECLARE STATEMENT |  | X | X |  |  | S
DECLARE TABLE |  | X | X |  |  | S
DECLARE変数 | X |  |  |  | X | S/C
DECLARE TRANSACTION | X | X | X | X |  | S
DELETE | X | X | X | X | X | S/C
DESCRIBE |  | X | X |  | X | S
DISCONNECT | X | X | X | X | X | S
DROP CATALOG | X | X | X | X | X | S
DROP COLLATING SEQUENCE | X | X | X | X | X | S
DROP CONSTRAINT | X | X | X | X | X | S
DROP DATABASE | X | X | X | X | X | S
DROP DOMAIN | X | X | X | X | X | S
DROP FUNCTION | X | X | X | X | X | S
DROP INDEX | X | X | X | X | X | S
DROP MODULE | X | X | X | X | X | S
DROP OUTLINE | X | X | X | X | X | S
DROP PATHNAME | X | X | X | X | X | S
DROP PROCEDURE | X | X | X | X | X | S
DROP ROLE | X | X | X | X | X | S
DROP SCHEMA | X | X | X | X | X | S
DROP SEQUENCE | X | X | X | X | X | S
DROP STORAGE MAP | X | X | X | X | X | S
DROP SYNONYM | X | X | X | X | X | S
DROP TABLE | X | X | X | X | X | S
DROP TRIGGER | X | X | X | X | X | S
DROP USER | X | X | X | X | X | S
DROP VIEW | X | X | X | X | X | S
EDIT | X |  |  |  | X |
END DECLARE |  | X |  |  |  | S
実行（@） | X |  |  |  | X |
EXECUTE |  | X | X |  | X | S
EXECUTE IMMEDIATE |  | X | X |  | X | S
EXIT | X |  |  |  | X |
EXPORT | X |  |  |  | X |
FETCH | X | X | X |  | X | S
FOR | X | X | X | X | X | C
GET DIAGNOSTICS | X | X | X | X | X | C
GET ENVIRONMENT | X |  |  |  | X | S
GRANT | X | X | X | X | X | S
GRANT（ANSI形式） | X | X | X | X | X | S
HELP | X |  |  |  | X |
IF | X | X | X | X | X | C
IMPORT | X |  |  |  | X |
INCLUDE |  | X |  |  |  | S
INSERT | X | X | X | X | X | S/C
INTEGRATE | X |  |  |  | X |
ITERATE | X | X | X | X | X | C
LOCK TABLE | X | X | X | X | X | S/C
LEAVE | X | X | X | X | X | C
LOOP | X | X | X | X | X | C
OPEN | X | X | X |  | X | S
オペレーティング・システムの起動（$） | X |  |  |  | X |
PREPARE |  | X | X |  | X | S
PRINT | X |  |  |  | X |
QUIT | X |  |  |  | X |
RELEASE |  | X | X |  | X | S
RENAME | X | X | X | X | X | S
REPEAT | X | X | X | X | X | C
RETURN | X | X | X | X | X | C
REVOKE | X | X | X | X | X | S
REVOKE（ANSI形式） | X | X | X | X | X | S
ROLLBACK | X | X | X | X | X | S/C
SELECT（一般形式） | X |  |  | X | X | S
SELECT（シングルトン選択） | X | X | X | X | X | S/C
SET | X |  |  |  | X | C
SET ALIAS | X | X | X | X | X | S
SET ALL CONSTRAINTS | X | X | X | X | X | S
SET代入 | X | X | X | X | X | C
SET AUTOMATIC TRANSLATION | X |  |  |  | X | S
SET CATALOG | X | X | X | X | X | S
SET CHARACTER LENGTH | X | X | X | X | X | S
SET COMPOUND TRANSACTIONS | X | X | X | X | X | S
SET CONNECT | X | X | X | X | X | S
SET DEFAULT CHARACTER SET | X | X | X | X | X | S
SET DEFAULT DATE FORMAT | X | X | X | X | X | S
SET DIALECT | X | X | X | X | X | S
SET DISPLAY | X |  |  |  |  | S
SET DISPLAY CHARACTER SET | X | X | X | X | X | S
SET ECHO | X |  |  |  | X | S
SET FEEDBACK | X |  |  |  | X | S
SET FLAGS | X |  |  | X | X | S
SET HEADING | X |  |  |  | X | S
SET HOLD CURSORS | X | X | X | X | X | S
SET IDENTIFIER CHARACTER SET | X | X | X | X | X | S
SET KEYWORD RULES | X | X | X | X | X | S
SET LITERAL CHARACTER SET | X | X | X | X | X | S
SET NAMES | X | X | X | X | X | S
SET NATIONAL CHARACTER SET | X | X | X | X | X | S
SET NULL | X |  |  |  | X | S
SET OPTIMIZATION LEVEL | X | X | X | X | X | S
SET QUIET COMMIT | X |  |  |  | X | S
SET QUOTING RULES | X | X | X | X | X | S
SET SCHEMA | X | X | X | X | X | S
SET SESSION AUTHORIZATION | X | X | X | X | X | S
SET TRANSACTION | X | X | X | X | X | S/C
SET VIEW UPDATE RULES | X | X | X | X | X | S
SHOW | X |  |  |  | X |
SIGNAL | X | X | X | X | X | C
START TRANSACTION | X | X | X | X | X | S/C
TRACE | X | X | X | X | X | C
TRUNCATE TABLE | X | X | X | X | X | S
UNDECLARE変数 | X |  |  |  | X | S
UPDATE | X | X | X | X | X | S
WHENEVER |  | X |  |  |  | S
WHILE | X | X | X | X | X | S