様々な種類のSQL文
次の項にあるリストは、SQL文の機能の概要について、次のカテゴリに分類して説明しています。
データ定義言語(DDL)文
データ定義言語(DDL)文によって、次のタスクを実行できます。
-
スキーマ・オブジェクトの作成、変更および削除
-
権限およびロールの付与および取消し
-
表、索引またはクラスタ上の情報の分析
-
監査オプションの構築
-
データ・ディクショナリへのコメントの追加
CREATE、ALTERおよびDROPコマンドは、特定のオブジェクトに対して排他的アクセスを必要とします。たとえば、別のユーザーが特定の表でトランザクションをオープンしている場合、ALTER TABLE文は実行できません。
GRANT、REVOKE、ANALYZE、AUDITおよび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(ALTERSESSIONおよびALTERSYSTEMを除くALTERで始まるすべての文。「セッション制御文」および「システム制御文」を参照)ANALYZEASSOCIATESTATISTICSAUDITCOMMENTCREATE... (CREATEで始まるすべての文)DISASSOCIATESTATISTICSDROP... (DROPで始まるすべての文)FLASHBACK... (FLASHBACKで始まるすべての文)GRANTNOAUDITPURGERENAMEREVOKETRUNCATE
データ操作言語(DML)文
データ操作言語(DML)文は、既存スキーマ・オブジェクトのデータにアクセスし、操作します。次の文は、現在のトランザクションを暗黙的にコミットしません。次に、データ操作言語文を示します。
CALLDELETEEXPLAIN PLANINSERTLOCK TABLEMERGESELECTUPDATE
SELECT文は、DML文の制限された形式であり、データベース内のデータへのアクセスのみが可能です。アクセスしたデータを操作してから問合せの結果を戻すことはできますが、データベースに格納されたデータを操作することはできません。
SELECT文は、動的に実行されるときにのみPL/SQLでサポートされます。ただし、類似のPL/SQL文SELECT INTOをPL/SQLコード内で使用でき、この文は動的に実行する必要はありません。CALLおよびEXPLAIN PLAN文は、動的に実行されるときにのみPL/SQLでサポートされます。他のすべてのDML文は、PL/SQLで完全にサポートされます。
トランザクション制御文
トランザクション制御文は、DML文で行った変更を管理します。次に、トランザクション制御文を示します。
COMMITROLLBACKSAVEPOINTSETTRANSACTIONSETCONSTRAINT
COMMITおよびROLLBACKコマンドの特定書式以外のトランザクション制御文は、PL/SQLでサポートされます。制限については、「COMMIT」および「ROLLBACK」を参照してください。
システム制御文
唯一のシステム制御文であるALTER SYSTEMは、Oracle Databaseインスタンスのプロパティを動的に管理します。この文によって、現行トランザクションが暗黙的にコミットされることはなく、この文はPL/SQLではサポートされません。