データ制御言語( DCL )は、データベースに格納されているデータへのアクセスを制御する (認可) ために使用されるコンピュータプログラミング言語に似た構文です。特に、構造化クエリ言語(SQL) の構成要素です。データ制御言語は、SQL コマンドの論理グループの 1 つです。SQL は、リレーショナル データベース管理システムの標準言語です。[ 1 ] SQL ステートメントは、データベースへのデータの挿入、データベース内のデータの削除または更新、データベースからのデータの取得などのタスクを実行するために使用されます。
データベースシステムはSQLを使用しますが、それぞれ独自の拡張機能も備えており、通常はそのシステムでのみ使用されます。例えば、Microsoft SQL ServerはSQLの拡張機能であるTransact-SQL(T-SQL)を使用します。同様に、OracleはOracle固有のSQL拡張機能であるPL-SQLを使用します。しかし、「Select」、「Insert」、「Update」、「Delete」、「Create」、「Drop」といった標準的なSQLコマンドを使用すれば、データベースで必要なほとんどすべての操作を実行できます。
DCLコマンドの例としては、SQLコマンドが挙げられます。
ユーザーまたはロールに対して権限を付与または取り消すことができる操作は、データ定義言語(DDL)とデータ操作言語(DML)の両方に適用され、CONNECT、SELECT、INSERT、UPDATE、DELETE、EXECUTE、USAGEなどが含まれます。
Microsoft SQL Serverには4 つの SQL コマンドのグループがあります: [ 2 ]
DCLコマンドは、データベースにおけるユーザーのアクセス制御と権限管理に使用されます。これらを使用することで、テーブルやレコードに対するユーザーの操作(行レベルセキュリティ)を簡単に許可または拒否できます。
DCLコマンドは次のとおりです。[ 2 ]
例えば、GRANTコマンドを使用すると、特定のテーブルまたは複数のテーブルに対してSELECT、INSERT、UPDATE、DELETEを実行する権限をユーザーに付与できます。
REVOKEコマンドは、権限を剥奪する(デフォルト)場合や、要件に基づいてUPDATEやDELETEなどの特定のコマンドの権限を取り消す場合に使用されます。
User1にEmployeesに対するSELECT 、INSERT 、UPDATE 、DELETE権限を付与するユーザー1への従業員に対するINSERTを取り消すユーザー1への従業員情報の更新を拒否する最初の例では、GRANT によって、ユーザー User1 に Employees という名前のテーブルに対して SELECT、INSERT、UPDATE、DELETE を実行する権限が付与されます。
2番目の例では、REVOKEによってUser1のテーブルEmployeesに対するINSERTコマンドの使用権限が削除されます。
DENYは特定のコマンドです。すべてのユーザーには、拒否または許可された権限のリストがあり、DENYコマンドはデータベースオブジェクトに対する特定の権限を明示的に禁止するために存在します。
Oracle Databaseでは、SQLコマンドをいくつかの種類に分類しています。それらは以下のとおりです。
詳細については、Oracle- [ 3 ] TCLを参照してください。
データ定義言語(DDL)ステートメントを使用すると、次のタスクを実行できます。
つまり、Oracle DatabaseのDDLコマンドには、権限の付与と取り消しが含まれており、これらは実際にはMicrosoft SQL Serverのデータ制御言語の一部です。
GRANT SELECT , INSERT , UPDATE , DELETE ON db1 . Employee TO user1 ;db1.Employeeテーブルに対するuser1からのSELECT 、INSERT 、UPDATE 、DELETEの取り消し。トランザクション制御文は、DML文によって行われた変更を管理します。トランザクション制御文は次のとおりです。
MySQLサーバーでは、SQLステートメントを異なるタイプのステートメントに分割します。
詳細については、MySQLトランザクションステートメント[ 4 ]を参照してください。
付与 および取り消しに関する明細書は、アカウント管理明細書の一部です。
GRANT文を使用すると、システム管理者はユーザーアカウントやロールに権限とロールを付与できます。以下の構文上の制限が適用されます。
REVOKE ステートメントを使用すると、システム管理者は権限と役割を取り消すことができ、これらはユーザーアカウントや役割から取り消すことができます。
REVOKE INSERT ON * . * FROM 'jeffrey' @'localhost' ;'role1' 、'role2'を'user1' @'localhost' 、'user2' @'localhost'から取り消します。REVOKE SELECT ON world . * FROM 'role3' ;GRANT ALL ON db1 . * TO 'jeffrey' @'localhost' ;GRANT 'role1' , 'role2' TO 'user1' @'localhost' , 'user2' @'localhost' ;GRANT SELECT ON world . * TO 'role3' ;PostgreSQLでは、DCLの実行はトランザクション処理であり、ロールバックが可能です。
GrantとRevokeは、データベース内でユーザーに付与される権限を制御するために使用されるSQL文です。
SQLiteにはユーザー名やログインがないため、DCLコマンドはありません。代わりに、SQLiteはファイルシステムのパーミッションに依存して、誰がデータベースを開いてアクセスできるかを定義します。[ 5 ]