Articulo de referencia

Lenguaje de control de datos

Un lenguaje de control de datos ( DCL ) es una sintaxis similar a un lenguaje de programación que se utiliza para controlar el acceso a los datos almacenados en una base de dato...

Un lenguaje de control de datos ( DCL ) es una sintaxis similar a un lenguaje de programación que se utiliza para controlar el acceso a los datos almacenados en una base de datos ( autorización ). En particular, es un componente del lenguaje de consulta estructurado (SQL). El lenguaje de control de datos es uno de los grupos lógicos de los comandos SQL. SQL es el lenguaje estándar para los sistemas de gestión de bases de datos relacionales. [ 1 ] Las sentencias SQL se utilizan para realizar tareas como insertar datos en una base de datos, eliminar o actualizar datos en una base de datos, o recuperar datos de una base de datos.

Aunque los sistemas de bases de datos utilizan SQL, también cuentan con extensiones propietarias propias que generalmente solo se usan en su sistema. Por ejemplo, Microsoft SQL Server utiliza Transact-SQL (T-SQL), una extensión de SQL. De manera similar, Oracle utiliza PL-SQL, una extensión de SQL específica de Oracle. Sin embargo, los comandos SQL estándar, como "Select", "Insert", "Update", "Delete", "Create" y "Drop", permiten realizar prácticamente cualquier operación necesaria en una base de datos.

Entre los ejemplos de comandos DCL se incluyen los comandos SQL:

  • OTORGAR PERMISO a usuarios específicos para realizar tareas específicas.
  • REVOKE para eliminar el acceso del usuario al objeto de la base de datos .

Las operaciones para las que se pueden otorgar o revocar privilegios a un usuario o rol se aplican tanto al lenguaje de definición de datos (DDL) como al lenguaje de manipulación de datos (DML), y pueden incluir CONNECT , SELECT , INSERT , UPDATE, DELETE , EXECUTE y USAGE .

Servidor Microsoft SQL

En Microsoft SQL Server hay cuatro grupos de comandos SQL: [ 2 ]

  • Lenguaje de manipulación de datos (DML)
  • Lenguaje de Definición de Datos (DDL)
  • Lenguaje de control de datos (DCL)
  • Lenguaje de control de transacciones (TCL)

Los comandos DCL se utilizan para el control de acceso y la gestión de permisos de los usuarios en la base de datos. Con ellos podemos permitir o denegar fácilmente ciertas acciones a los usuarios sobre las tablas o los registros (seguridad a nivel de fila).

Los comandos DCL son: [ 2 ]

CONCEDER
otorga permisos específicos para la tabla (y otros objetos) a grupos o usuarios específicos de una base de datos, o asigna un rol específico con ciertos permisos a dichos grupos o usuarios;
REVOCAR
elimina permisos específicos para la tabla (y otros objetos) o elimina un rol específico con ciertos permisos para grupos o usuarios específicos de una base de datos;
DENEGAR
Niega un permiso específico a un objeto de seguridad.

Por ejemplo: GRANT se puede usar para otorgar privilegios a un usuario para realizar SELECT, INSERT, UPDATE y DELETE en una tabla específica o en varias tablas.

El comando REVOKE se utiliza para quitar un privilegio (por defecto) o para revocar un comando específico como UPDATE o DELETE según los requisitos.

Ejemplo

Otorgar permisos de SELECCIONAR , INSERTAR , ACTUALIZAR y ELIMINAR en Empleados al Usuario1Revocar INSERTAR en empleados para Usuario1Denegar actualización sobre empleados al usuario1

En el primer ejemplo, GRANT otorga privilegios al usuario User1 para realizar SELECT, INSERT, UPDATE y DELETE en la tabla llamada Employees.

En el segundo ejemplo, REVOKE elimina los privilegios del Usuario1 para usar el comando INSERT en la tabla Empleados.

DENY es un comando específico. Podemos concluir que cada usuario tiene una lista de privilegios que se le deniegan o se le otorgan, por lo que el comando DENY sirve para prohibir explícitamente ciertos privilegios sobre los objetos de la base de datos.

Base de datos Oracle

Oracle Database divide los comandos SQL en diferentes tipos. Estos son:

  • Sentencias del lenguaje de definición de datos (DDL)
  • Sentencias del lenguaje de manipulación de datos (DML)
  • Declaraciones de control de transacciones
  • Declaraciones de control de sesión
  • Declaración de control del sistema
  • Sentencias SQL incrustadas

Para obtener más detalles, consulte Oracle- [ 3 ] TCL     

Las sentencias del lenguaje de definición de datos (DDL) permiten realizar estas tareas:

  • Crear, modificar y eliminar objetos de esquema
  • Otorgar y revocar privilegios y roles.
  • Analizar información en una tabla, índice o clúster.
  • Establecer opciones de auditoría
  • Agregar comentarios al diccionario de datos

Por lo tanto, los comandos DDL de Oracle Database incluyen los privilegios Grant y Revoke , que en realidad forman parte del lenguaje de control de datos en Microsoft SQL Server.

Ejemplo

OTORGAR PERMISOS DE SELECCIONAR , INSERTAR , ACTUALIZAR , ELIMINAR EN db1.Employee A user1 ;REVOKE SELECT , INSERT , UPDATE , DELETE ON db1 . Employee FROM user1 ;

Sentencias de control de transacciones en Oracle

Las sentencias de control de transacciones gestionan los cambios realizados por las sentencias DML. Las sentencias de control de transacciones son:

  • COMPROMETERSE
  • RETROCESO
  • PUNTO DE GUARDADO
  • ESTABLECER TRANSACCIÓN
  • RESTRICCIÓN DE ESTABLECIMIENTO

MySQL

El servidor MySQL divide las sentencias SQL en diferentes tipos de sentencias.

  • Declaraciones de definición de datos
  • Declaraciones de manipulación de datos
  • Estados de cuenta transaccionales y de bloqueo
  • Declaraciones de replicación
  • Declaraciones preparadas
  • Sintaxis de sentencias compuestas
  • Declaraciones de administración de bases de datos
  • Estados de cuenta de servicios públicos
  • Estados de gestión de cuentas

Para obtener más detalles, consulte las sentencias transaccionales de MySQL [ 4 ].

Los estados de cuenta de Concesión y Revocación forman parte de los Estados de Cuenta de Gestión de Cuenta.

La instrucción GRANT permite a los administradores del sistema otorgar privilegios y roles, que pueden asignarse a cuentas y roles de usuario. Se aplican las siguientes restricciones de sintaxis:

  • GRANT no puede combinar la concesión de privilegios y roles en la misma instrucción. Una instrucción GRANT debe otorgar privilegios o roles.
  • La cláusula ON distingue si la declaración otorga privilegios o roles:
  • Con ON, la declaración otorga privilegios.
  • Sin ON, la declaración otorga roles.
  • Está permitido asignar tanto privilegios como roles a una cuenta, pero debe utilizar declaraciones GRANT separadas, cada una con la sintaxis adecuada a lo que se va a otorgar.

La instrucción REVOKE permite a los administradores del sistema revocar privilegios y roles, los cuales pueden ser revocados de cuentas y roles de usuario.

Ejemplos

REVOCAR INSERCIÓN EN * . * DESDE 'jeffrey' @'localhost' ;REVOCAR 'role1' , 'role2' DE 'user1' @'localhost' , 'user2' @'localhost' ;REVOCAR SELECCIÓN EN mundo . * DE 'rol3' ;GRANT ALL ON db1 . * TO 'jeffrey' @'localhost' ;GRANT 'role1' , 'role2' TO 'user1' @'localhost' , 'user2' @'localhost' ;GRANT SELECT ON world . * TO 'role3' ;

En PostgreSQL , la ejecución de DCL es transaccional y se puede revertir.

Grant y Revoke son sentencias SQL que se utilizan para controlar los privilegios otorgados a los usuarios en una base de datos.

SQLite no tiene comandos DCL, ya que no utiliza nombres de usuario ni inicios de sesión. En cambio, SQLite depende de los permisos del sistema de archivos para definir quién puede abrir y acceder a una base de datos. [ 5 ]

Véase también

Referencias

  1. "El estándar SQL – ISO/IEC 9075:2016 (ANSI X3.135) – Blog de ANSI" . Blog de ANSI . 5 de octubre de 2018. Consultado el 19 de septiembre de 2020 .
  2. 1 2 Love, Aubrey (28 de marzo de 2023). "Cláusula SQL, instrucción, comando, expresión y lote definidos" . MSSQLTips . Recuperado el 26 de enero de 2025 .
  3. "Referencia del lenguaje SQL de bases de datos" . docs.oracle.com . Consultado el 19 de septiembre de 2020 .
  4. "MySQL :: Manual de referencia de MySQL 8.0 :: 13.7.1 Declaraciones de administración de cuentas" . dev.mysql.com . Consultado el 19 de septiembre de 2020 .  
  5. Kreibich, JA, 2010. Uso de SQLite , O'Reilly.