データ制御言語(DCL)
データ制御言語(Data Control Language:DCL)とは、データベースを管理・操作するためのデータベース言語もしくは
データベース言語要素です。
DCLはデータベースの利用者への読込、登録、変更、削除権限の与奪に用いられます。
データ制御言語 一覧
構文 | 内容 |
---|---|
TRANSACTION | 一連の作業を全体として一つの処理として管理するために用います。 |
COMMIT | トランザクション処理が成功したときに、その結果を確定させます。 |
ROLLBACK |
トランザクション処理が失敗(データ更新などで障害発生)したときに、 処理途上でコミットされていないトランザクションの処理をすべて取り消し、 その前の状態にまでに戻します。 |
GRANT |
データベースシステム内で作成されたユーザーに対して、 テーブルなど各オブジェクトの作成や参照、追加、更新、削除などの権限を 与えます。 |
REVOKE |
データベースシステム内で作成されたユーザーに与えられている権限を 抹消します。(GRANT文で与えた権限を抹消) |
データ制御言語 文法
-- TRANSACTIONを開始. (Oracle)
-- (transaction_name:トランザクションの名前)
SET TRANSACTION [ READ ONLY | READ WRITE ]
[ NAME 'transaction_name' ];
-- TRANSACTIONを開始. (SQL Server)
BEGIN { TRAN | TRANSACTION };
-- TRANSACTIONのCOMMIT. (Oracle)
-- (オプション未指定時:COMMIT WORK WRITE WAIT IMMEDIATE)
COMMIT [ WORK [ WAIT | NOWAIT ] [ IMMEDIATE | BATCH ] ];
-- TRANSACTIONのCOMMIT. (SQL Server)
-- (transaction_name:トランザクションの名前 variable:変数)
COMMIT [ { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ] ]
[ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ];
COMMIT [ WORK ];
-- TRANSACTIONのROLLBACK. (Oracle)
-- (transaction_name:トランザクションの名前)
ROLLBACK [ TO SAVEPOINT transaction_name] [ WORK ];
-- TRANSACTIONのROLLBACK. (SQL Server)
-- (transaction_name:トランザクションの名前 variable:変数)
-- (savepoint_name :セーブポイントの名前 variable:変数)
ROLLBACK { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ];
ROLLBACK [ WORK ];
-- システム権限を付与. (Oracle)
GRANT システム権限
TO { user_name | ロール名 | PUBLIC } [ WITH ADMIN OPTION ];
-- オブジェクト権限を付与. (Oracle)
GRANT オブジェクト権限
ON { object_name }
TO { user_name | ロール名 | PUBLIC } [ WITH GRANT OPTION ];
-- システム権限を付与. (SQL Server)
GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal
-- スキーマ権限を付与. (SQL Server)
-- database_principal:権限を取り消すプリンシパルを指定
-- granting_principal:プリンシパルが権限を許可する権利を取得した、
-- 元のプリンシパルを指定します
GRANT permission [ ,...n ] ON
SCHEMA :: schema_name
TO database_principal [ ,...n ]
[ WITH GRANT OPTION ]
[ AS granting_principal ]
-- オブジェクト権限を付与. (SQL Server)
-- database_principal:権限を取り消すプリンシパルを指定
GRANT permission [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO database_principal [ ,...n ]
[ WITH GRANT OPTION ]
[ AS database_principal ]
-- システム権限を抹消. (Oracle)
REVOKE システム権限 FROM user_name ;
-- オブジェクト権限を抹消. (Oracle)
REVOKE オブジェクト権限 ON テーブル名 FROM user_name;
-- システム権限を抹消. (SQL Server)
REVOKE { SELECT | EXECUTE } ON [sys.]system_object FROM principal
-- スキーマ権限を抹消. (SQL Server)
-- database_principal:権限を取り消すプリンシパルを指定
REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] ON
SCHEMA :: schema_name
{ FROM | TO } database_principal [ ,...n ]
[ CASCADE ]
[ AS revoking_principal ]
-- オブジェクト権限を抹消. (SQL Server)
-- database_principal:権限を取り消すプリンシパルを指定
REVOKE [ GRANT OPTION FOR ] permission [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
{ FROM | TO } database_principal [ ,...n ]
[ CASCADE ]
[ AS database_principal ]