日本語PDF

様々な種類のSQL文

次の項にあるリストは、SQL文の機能の概要について、次のカテゴリに分類して説明しています。

データ定義言語(DDL)文

データ定義言語(DDL)文によって、次のタスクを実行できます。

  • スキーマ・オブジェクトの作成、変更および削除

  • 権限およびロールの付与および取消し

  • 表、索引またはクラスタ上の情報の分析

  • 監査オプションの構築

  • データ・ディクショナリへのコメントの追加

CREATEALTERおよびDROPコマンドは、特定のオブジェクトに対して排他的アクセスを必要とします。たとえば、別のユーザーが特定の表でトランザクションをオープンしている場合、ALTER TABLE文は実行できません。

GRANTREVOKEANALYZEAUDITおよびCOMMENTコマンドは、特定のオブジェクトに対する排他的アクセスを必要としません。たとえば、他のユーザーが表を更新しているときでも、その表を分析できます。

Oracle Databaseは、暗黙的にすべてのDDL文の前後で現在のトランザクションをコミットします。

DDL文はブロッキングまたは非ブロッキングのいずれかで、どちらのタイプのDDL文にも内部構造の排他ロックが必要です。

関連項目:

ブロック化DDLと非ブロック化DDLの相違について学習するには、『Oracle Database開発ガイド』を参照してください。

DDL文の多くは、Oracle Databaseにスキーマ・オブジェクトを再コンパイルまたは再認可させることができます。Oracle Databaseがスキーマ・オブジェクトを再コンパイルまたは再認可する方法、およびDDL文によってそれを実行する環境については、『Oracle Database概要』を参照してください。

DDL文は、DBMS_SQLパッケージを使用したPL/SQLによってサポートされます。

関連項目:

このパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

次に、DDL文を示します。

  • ALTER (ALTER SESSIONおよびALTER SYSTEMを除くALTERで始まるすべての文。「セッション制御文」および「システム制御文」を参照)
  • ANALYZE
  • ASSOCIATE STATISTICS
  • AUDIT
  • COMMENT
  • CREATE ... (CREATEで始まるすべての文)
  • DISASSOCIATE STATISTICS
  • DROP ... (DROPで始まるすべての文)
  • FLASHBACK ... (FLASHBACKで始まるすべての文)
  • GRANT
  • NOAUDIT
  • PURGE
  • RENAME
  • REVOKE
  • TRUNCATE

データ操作言語(DML)文

データ操作言語(DML)文は、既存スキーマ・オブジェクトのデータにアクセスし、操作します。次の文は、現在のトランザクションを暗黙的にコミットしません。次に、データ操作言語文を示します。

  • CALL
  • DELETE
  • EXPLAIN PLAN
  • INSERT
  • LOCK TABLE
  • MERGE
  • SELECT
  • UPDATE

SELECT文は、DML文の制限された形式であり、データベース内のデータへのアクセスのみが可能です。アクセスしたデータを操作してから問合せの結果を戻すことはできますが、データベースに格納されたデータを操作することはできません。

SELECT文は、動的に実行されるときにのみPL/SQLでサポートされます。ただし、類似のPL/SQL文SELECT INTOをPL/SQLコード内で使用でき、この文は動的に実行する必要はありません。CALLおよびEXPLAIN PLAN文は、動的に実行されるときにのみPL/SQLでサポートされます。他のすべてのDML文は、PL/SQLで完全にサポートされます。

トランザクション制御文

トランザクション制御文は、DML文で行った変更を管理します。次に、トランザクション制御文を示します。

  • COMMIT
  • ROLLBACK
  • SAVEPOINT
  • SET TRANSACTION
  • SET CONSTRAINT

COMMITおよびROLLBACKコマンドの特定書式以外のトランザクション制御文は、PL/SQLでサポートされます。制限については、「COMMIT」および「ROLLBACK」を参照してください。

セッション制御文

セッション制御文は、ユーザー・セッションのプロパティを動的に管理します。次の文は、現在のトランザクションを暗黙的にコミットしません。

PL/SQLは、セッション制御文をサポートしません。次に、セッション制御文を示します。

  • ALTER SESSION
  • SET ROLE

システム制御文

唯一のシステム制御文であるALTER SYSTEMは、Oracle Databaseインスタンスのプロパティを動的に管理します。この文によって、現行トランザクションが暗黙的にコミットされることはなく、この文はPL/SQLではサポートされません。

埋込みSQL文

埋込みSQL文は、DDL、DMLおよびトランザクション制御文を手続き型言語プログラム内に入れます。埋込みSQLは、Oracleプリコンパイラでサポートされており、次のマニュアルに記載されています。