Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Data control language
Instruction set which governs access to a database

Data Control Language (DCL) is a subset of SQL, the standard language for relational databases (SQL standard). DCL commands like GRANT and REVOKE manage user access and permissions to database objects, controlling authorization and security. While SQL commands such as SELECT, INSERT, UPDATE, and DELETE perform data operations, DCL specifically handles permission grants and revocations for both Data Definition Language (DDL) and Data Manipulation Language (DML). Different systems extend SQL with proprietary languages, like Transact-SQL for Microsoft SQL Server and PL-SQL for Oracle, but standard SQL commands remain essential for database management.

We don't have any images related to Data control language yet.
We don't have any YouTube videos related to Data control language yet.
We don't have any PDF documents related to Data control language yet.
We don't have any Books related to Data control language yet.
We don't have any archived web articles related to Data control language yet.

Microsoft SQL Server

In Microsoft SQL Server there are four groups of SQL commands:2

  • Data Manipulation Language (DML)
  • Data Definition Language (DDL)
  • Data Control Language (DCL)
  • Transaction Control Language (TCL)

DCL commands are used for access control and permission management for users in the database. With them we can easily allow or deny some actions for users on the tables or records (row level security).

DCL commands are:3

GRANT gives specified permissions for the table (and other objects) to, or assigns a specified role with certain permissions to, specified groups or users of a database; REVOKE takes away specified permissions for the table (and other objects) to, or takes away a specified role with certain permissions to, specified groups or users of a database; DENY denies a specified permission to a security object.

For example: GRANT can be used to give privileges to user to do SELECT, INSERT, UPDATE and DELETE on a specific table or multiple tables.

The REVOKE command is used to take a privilege away (default) or revoking specific command like UPDATE or DELETE based on requirements.

Example

Grant SELECT,INSERT,UPDATE,DELETE on Employees To User1 Revoke INSERT On Employees To User1 Deny Update On Employees to User1

In the first example, GRANT gives privileges to user User1 to do SELECT, INSERT, UPDATE and DELETE on the table named Employees.

In the second example, REVOKE removes User1's privileges to use the INSERT command on the table Employees.

DENY is a specific command. We can conclude that every user has a list of privilege which is denied or granted so command DENY is there to explicitly ban you some privileges on the database objects.:

Oracle Database

Oracle Database divide SQL commands to different types. They are.

  • Data Definition Language (DDL) Statements
  • Data Manipulation Language (DML) Statements
  • Transaction Control Statements
  • Session Control Statements
  • System Control Statement
  • Embedded SQL Statements

For details refer Oracle-4TCL         

Data definition language (DDL) statements let you to perform these tasks:

  • Create, alter, and drop schema objects
  • Grant and revoke privileges and roles
  • Analyze information on a table, index, or cluster
  • Establish auditing options
  • Add comments to the data dictionary

So Oracle Database DDL commands include the Grant and revoke privileges which is actually part of Data control Language in Microsoft SQL server.

Syntax for grant and revoke in Oracle Database:

Example

GRANT SELECT, INSERT, UPDATE, DELETE ON db1.Employee TO user1; REVOKE SELECT, INSERT, UPDATE, DELETE ON db1.Employee FROM user1;

Transaction Control Statements in Oracle

Transaction control statements manage changes made by DML statements. The transaction control statements are:

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

MySQL

MySQL server they divide SQL statements into different type of statement

  • Data Definition Statements
  • Data Manipulation Statements
  • Transactional and Locking Statements
  • Replication Statements
  • Prepared Statements
  • Compound Statement Syntax
  • Database Administration Statements
  • Utility Statements

For details refer MySQL Transactional statements5

The grant, revoke syntax are as part of Database administration statementsàAccount Management System.

The GRANT statement enables system administrators to grant privileges and roles, which can be granted to user accounts and roles. These syntax restrictions apply:

  • GRANT cannot mix granting both privileges and roles in the same statement. A given GRANT statement must grant either privileges or roles.
  • The ON clause distinguishes whether the statement grants privileges or roles:
  • With ON, the statement grants privileges
  • Without ON, the statement grants roles.
  • It is permitted to assign both privileges and roles to an account, but you must use separate GRANT statements, each with syntax appropriate to what is to be granted.

The REVOKE statement enables system administrators to revoke privileges and roles, which can be revoked from user accounts and roles.

Examples

REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; REVOKE 'role1', 'role2' FROM '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';

In PostgreSQL, executing DCL is transactional, and can be rolled back.

Grant and Revoke are the SQL commands are used to control the privileges given to the users in a Databases

SQLite does not have any DCL commands as it does not have usernames or logins. Instead, SQLite depends on file-system permissions to define who can open and access a database.6

See also

References

  1. "The SQL Standard – ISO/IEC 9075:2016 (ANSI X3.135) – ANSI Blog". The ANSI Blog. 2018-10-05. Retrieved 2020-09-19. https://blog.ansi.org/2018/10/sql-standard-iso-iec-9075-2016-ansi-x3-135/

  2. Love, Aubrey (March 28, 2023). "SQL Clause, Statement, Command, Expression and Batch Defined". MSSQLTips. Retrieved 2025-01-26. https://www.mssqltips.com/sqlservertip/7575/sql-clause-statement-command-expression-batch-definition/

  3. Love, Aubrey (March 28, 2023). "SQL Clause, Statement, Command, Expression and Batch Defined". MSSQLTips. Retrieved 2025-01-26. https://www.mssqltips.com/sqlservertip/7575/sql-clause-statement-command-expression-batch-definition/

  4. "Database SQL Language Reference". docs.oracle.com. Retrieved 2020-09-19. https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_1001.htm#SQLRF30001

  5. "MySQL :: MySQL 8.0 Reference Manual :: 13.7.1 Account Management Statements". dev.mysql.com. Retrieved 2020-09-19. https://dev.mysql.com/doc/refman/8.0/en/account-management-statements.html

  6. Kreibich, J.A., 2010. Using SQLite, O’Reilly. https://books.google.com/books?id=HFIM47wp0X0C