Volver a la lista de artículos Artículos
Lectura de 7 minutos

¿Qué son DDL, DML, DQL y DCL en SQL?

Exploramos la separación de SQL en sus cuatro sublenguajes principales y explicamos el significado de cada uno de ellos.

Cuando esté aprendiendo SQL -quizá a través del completo curso de LearnSQL.es SQL para principiantes de - puede que te hayas encontrado con los términos DDL, DML, DQL y DCL. Y quizás te hayas confundido con todos los acrónimos. En este artículo, explicaremos qué significan estos términos y cómo corresponden a sublenguajes que dividen claramente el lenguaje SQL en cuatro partes que funcionan juntas.

División de SQL en sublenguajes

El lenguaje de consulta estructurado, o SQL, es un lenguaje completo para manipular bases de datos. Es el lenguaje utilizado en sistemas de bases de datos como PostgreSQL, MySQL, Microsoft SQL Server y Oracle Database. Cada uno de estos sistemas tiene sus propias implementaciones de las docenas de comandos del lenguaje SQL (es decir, sus propios dialectos), lo que puede resultar abrumador al principio.

SQL puede hacer muchas cosas diferentes: crear tablas de bases de datos, insertar o modificar registros, añadir índices, recuperar información, etc. Por ello, puede ser útil dividir SQL en varios sublenguajes, lo que nos ayudará a comprender mejor todas las operaciones que se pueden realizar en una base de datos SQL. Estos sublenguajes son:

  • Lenguaje de Consulta de Datos (DQL) - El Lenguaje de Consulta de Datos es el sublenguaje responsable de leer, o consultar, datos de una base de datos. En SQL, corresponde al SELECT
  • Lenguaje deManipulación de Datos (DML ) - El Lenguaje de Manipulación de Datos es el sublenguaje responsable de añadir, editar o borrar datos de una base de datos. En SQL, corresponde a los lenguajes INSERT, UPDATE, y DELETE
  • Lenguaje de Definición de Datos (DDL ) - El Lenguaje de Definición de Datos es el sublenguaje responsable de definir la forma en que se estructuran los datos en una base de datos. En SQL, esto corresponde a la manipulación de tablas a través de CREATE TABLE, ALTER TABLE, y DROP TABLE
  • Lenguaje de Control de Datos (DCL) - El Lenguaje de Control de Datos es el sublenguaje responsable de las tareas administrativas de control de la propia base de datos, especialmente la concesión y revocación de permisos de base de datos para los usuarios. En SQL, esto corresponde a los comandos GRANT, REVOKE, y DENY, entre otros.

En las secciones siguientes repasaremos estos sublenguajes uno por uno y exploraremos sus significados y los comandos que representan. Si quieres profundizar en estos conceptos, sigue nuestro curso interactivo SQL para principiantes interactivo en LearnSQL.es. Contiene 129 ejercicios prácticos que te ayudarán a aprender SQL a través de la práctica. Con cada ejercicio resuelto, ganarás confianza en tus conocimientos de SQL.

Lenguaje de consulta de datos (DQL)

El Lenguaje de Consulta de Datos, o DQL para abreviar, es el grupo de comandos responsables de la consulta de datos de una base de datos. El principal comando DQL en SQL es el comando SELECT, que recupera datos de una o más tablas.

Tomemos la siguiente tabla. Contiene datos de cuentas bancarias y se llama Accounts:

IDNameBalance
1John Doe2000
2Sally Swanson1800
3Richard Poor5

Si quisiéramos recuperar los nombres de todos los usuarios con una cuenta bancaria, utilizaríamos este comando SELECT:

SELECT Name 
FROM Accounts

El comando anterior es una sentencia típica del sublenguaje DQL. Sin embargo, ¿qué pasaría si quisiéramos obtener los nombres de todos los usuarios con un saldo superior a $1500? En ese caso, necesitamos añadir la cláusula WHERE a la sentencia:

SELECT Name 
FROM Accounts 
WHERE Balance > 1500

Eche un vistazo a nuestra SQL para principiantes Cheat Sheet para más detalles sobre el comando SELECT (y mucho más).

Lenguaje de manipulación de datos (DML)

El Lenguaje de Manipulación de Datos, o DML por sus siglas en inglés, es el grupo de comandos responsables de manipular datos en una base de datos; esto generalmente implica insertar, editar o borrar filas en tablas SQL.

El comando SQL para insertar una nueva fila en una tabla es el comando INSERT. Si queremos añadir una fila a la tabla Accounts para un usuario llamado Evan Johnson con un saldo de 3200 $, haríamos algo como esto:

INSERT INTO Accounts (Name, Balance) 
VALUES (‘Evan Johnson’, 3200)

Si, en algún momento en el futuro, Evan hiciera un retiro de $200, necesitaríamos actualizar su saldo a $3000. Para editar el registro de la cuenta bancaria de Evan, necesitamos utilizar el comando UPDATE:

UPDATE Accounts SET Balance = 3000 
WHERE Name = ‘Evan Johnson’

Por último, si Evan decidiera cerrar su cuenta en nuestro banco, tendríamos que borrar su entrada en la tabla Accounts tabla. Para ello, debemos utilizar el comando DELETE:

DELETE FROM Accounts 
WHERE Name = ‘Evan Johnson’

Los comandos descritos anteriormente (INSERT, UPDATE, y DELETE) representan las principales operaciones SQL para la manipulación de datos y, por lo tanto, conforman el Lenguaje de Manipulación de Datos. Para aprender más sobre estos comandos, puedes leer el artículo SQL INSERT, SQL UPDATE, SQL DELETE - Oh My! o tomar el curso Cómo añadir, modificar y eliminar datos con SQL curso aquí mismo en LearnSQL.es.

Lenguaje de Definición de Datos (DDL)

El Lenguaje de Definición de Datos, o DDL, está compuesto por los comandos responsables de crear, editar y borrar tablas SQL. Estos comandos son CREATE TABLE, ALTER TABLE, y DROP TABLE.

En los ejemplos anteriores, trabajábamos con la tabla Accounts que ya tenía una estructura y registros. ¿Pero cómo haríamos para crear esta tabla en primer lugar? Tendríamos que utilizar el comando CREATE TABLE:

CREATE TABLE Accounts (
	ID INT,
	Name VARCHAR(255),
	Balance INT
)

¿Y si quisiéramos editar la tabla para que tuviera una columna que almacenara los números de teléfono de los titulares de las cuentas? Tendríamos que utilizar el comando ALTER TABLE:

ALTER TABLE Accounts
ADD Phone VARCHAR(255)

Por último, si queremos eliminar la tabla Accounts tabla, utilizaríamos el comando DROP TABLE:

DROP TABLE Accounts

Estos comandos tienen muchas más funciones que las enumeradas anteriormente y su sintaxis específica suele variar según los dialectos de SQL. Si quieres saber más, sigue nuestro curso sobre Creación de estructuras de bases de datos o lee ¿Qué es un dialecto SQL y cuál deberías aprender? para hacerte una idea de las distintas implementaciones de SQL disponibles.

Lenguaje de Control de Datos (DCL)

El Lenguaje de Control de Datos, o DCL para abreviar, es responsable de todo tipo de tareas administrativas en torno a la propia base de datos. La más notable es establecer permisos para los usuarios de la base de datos, lo que se hace principalmente a través de los comandos GRANT, REVOKE y DENY.

GRANT es el comando SQL responsable de conceder permisos a un usuario de la base de datos. Si quisiéramos conceder el permiso para consultar la tabla Accounts a un usuario llamado Mark, haríamos algo como esto:

GRANT SELECT TO ‘mark’@’localhost’

Para denegar explícitamente el permiso de consulta de la tabla a un usuario de la base de datos, utilice el comando DENY como se indica a continuación:

DENY SELECT FROM ‘mark’@’localhost’

Tenga en cuenta que denegar explícitamente un permiso impide que se conceda en el futuro. Si simplemente queremos anular un comando GRANT o DENY, debemos utilizar el comando REVOKE:

REVOKE SELECT FROM ‘mark’@’localhost’

El comando anterior revierte cualquier permiso particular de GRANT y DENY asignado al usuario, esencialmente restableciéndolos a su estado por defecto.

Tenga en cuenta que estos comandos difieren mucho entre los dialectos de SQL, por lo que los ejemplos anteriores suponen que está ejecutando Microsoft SQL Server. Hay muchos más comandos relacionados con la administración de bases de datos, pero difieren tanto entre plataformas que sería abrumador tratarlos aquí. Consulte la documentación de su base de datos para obtener más detalles.

Más información sobre el lenguaje SQL

En resumen, el lenguaje SQL puede dividirse en cuatro sublenguajes:

  1. Lenguaje de Consulta de Datos (DQL) para consultar datos.
  2. Lenguaje deManipulación de Datos (DML ) para editar datos.
  3. Lenguaje deDefinición de Datos (DDL) para estructurar datos.
  4. Lenguaje decontrol de datos (DCL ) para administrar la base de datos.

Si quieres aprender más sobre SQL, apúntate a nuestro SQL para principiantes curso, donde cubrimos todo esto y más. También puedes echar un vistazo a nuestra SQL para principiantes Cheat Sheet para refrescar rápidamente la sintaxis de cualquier comando.