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つの方法で使用できます。
$ ! 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; |
いずれの方法でも、わずかな調整のみで、対話型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記号が定義され、標準環境とマルチバージョン環境の両方で有効になります。
これらの記号を定義するには、次を入力します。
$ @SYS$LIBRARY:RDB$SETVER RESET |
RDB$SETVER.COMおよび対応するRDB$SHOVER.COMの詳細は、Oracle Rdbのインストレーションおよび構成ガイドを参照してください。
1.2 サンプル・ディレクトリ
インストール時に、SQLによって様々な言語の多数のサンプル・プログラムがシステムのサンプル・ディレクトリにインストールされます。このディレクトリには、サンプル・データベースを作成するためのコマンド・プロシージャまたはスクリプトも含まれます。
このサンプル・ディレクトリは、論理名SQL$SAMPLEによって定義されます。
1.3 構文図の読み方
このマニュアルでは、構文図を使用してSQL文の形式を示します。構文図は、SQL文のオプション、必須および反復の特性をグラフィカルに表します。SQL文の構文図を読むことによって、文の構文について学習できます。
構文図は左上隅から読み始め、矢印に従って進み、右下隅で終わります。パスの分岐では、該当するオプションを含む分岐を選択します。オプションを省略する場合は、言語要素が含まれていないパスを選択します。図に2つ以上の水平線がある場合、矢印は各線の終端で下に曲がり、左の余白に続きます。構文図には次のものを含めることができます。
図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によってその非実行可能文に対してPREPARE文が処理されると有効になります。動的SQLでの非実行可能文に対するEXECUTE文の発行は有効ですが、何も処理されません。
対話型SQLでの非実行可能文とは、文によって制御される操作が、実行可能文を入力するまでは発生しないことを意味しています。たとえば、DECLARE TRANSACTION文で定義しているトランザクションは、SELECTなどのデータ操作文または定義文を入力するまで開始されません。同様に、DECLARE CURSOR文で定義している結果表は、OPEN文を入力するまで作成されません。
表1-1は、SQL文が許可および処理される環境でのすべてのSQL文を示しています。この表では、特に各文で次のことが可能かどうかを示しています。
特定の環境での文の使用の詳細(制限に関する情報など)は、第6章を参照してください。
| 文 | 対話型 |
プリコンパイル |
モジュール言語 |
動的に実行可能 | 実行可能 | 単一または複合 |
|---|---|---|---|---|---|---|
| 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 | ||
| 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 |