データ定義言語DDLステートメントは、スキーマオブジェクトを定義、変更、および削除するために使用されます。
DDLにより、アクセス対象のアプリケーションを変更することなく、オブジェクトのプロパティを変更できます。例えば、人事アプリケーションがアクセスするテーブルに列を追加できますが、このアプリケーションを書き換える必要はありません。また、データベースユーザーがデータベース内で作業を実行する際にも、DDLを使用してオブジェクトの構造を変更できます。
より具体的には、DDLステートメントを使用して、次の操作を実行できます:
スキーマオブジェクトやその他のデータベースオブジェクトの構造を作成、変更、および削除します。これには、データベース自体やデータベースユーザーも含まれます。ほとんどのDDLステートメントは、キーワード
CREATE、ALTER、またはDROPで始まります。スキーマオブジェクトの構造を削除せずに、そのすべてのデータを削除します(
TRUNCATEコマンド)。監査オプションを有効または無効にします(キーワード
AUDITおよびNOAUDIT)。データベースオブジェクトにコメントを追加します。
データベースは、DDLステートメントを実行する前に暗黙的なコミットを行います。DDLステートメントの実行後、即座にコミットまたはロールバックが実行されます。
次の例では、DDLステートメントを使用してcusotmerテーブルを作成し、DMLステートメントを使用してテーブルに2行を挿入します。次に、DDLステートメントを使用してテーブル構造を変更し、DCLステートメントを使用してユーザーにこのテーブルの読み取り権限を付与および取り消し、最後にそのテーブルを削除します。
CREATE TABLE customer(cust_id INT PRIMARY KEY,common_name VARCHAR(15));
# DMLステートメント
INSERT INTO customer VALUES (1,'Tom');
INSERT INTO customer VALUES (2,'Mary');
# DDLステートメント
ALTER TABLE customer ADD ( cust_name VARCHAR(40) );
# DCLステートメント
GRANT SELECT ON customer to User2;
REVOKE SELECT ON customer from Users;
# DDLステートメント
DROP TABLE customer;
上記の例では、2つの挿入ステートメントの後にALTER TABLEステートメントが続くため、データベースは2つの挿入操作をコミットします。ALTER TABLEステートメントが正常に実行された場合、データベースはこのDDLステートメントをコミットします。そうでない場合、データベースはこのDDLステートメントをロールバックします。いずれの場合でも、2つの挿入操作はすでにコミットされています。