SQL

Tutorial SQL: Definición de DDL y DML

Aprende qué son los comandos DDL y DML en SQL, sus usos, diferencias y cómo manipular bases de datos con MySQL y PostgreSQL.

Aprende SQL y certifícate

Comandos DDL

El Data Definition Language (DDL) es el subconjunto de SQL que se encarga de definir y modificar la estructura de la base de datos. Estos comandos actúan sobre los objetos de la base de datos como esquemas, tablas, índices y vistas, pero no sobre los datos que contienen.

Los comandos DDL son declarativos y definen el esquema de la base de datos. Cuando ejecutas un comando DDL, estás comunicando al sistema gestor de base de datos cómo debe organizarse la información, qué restricciones debe aplicar y cómo deben relacionarse los diferentes elementos.

Principales comandos DDL

Los comandos DDL fundamentales que encontrarás en MySQL y PostgreSQL incluyen:

CREATE - Permite crear nuevos objetos en la base de datos:

-- Crear una nueva base de datos
CREATE DATABASE tienda_online;

-- Crear una nueva tabla
CREATE TABLE productos (
    id INT PRIMARY KEY,
    nombre VARCHAR(100),
    precio DECIMAL(10,2)
);

ALTER - Modifica la estructura de objetos existentes:

-- Añadir una nueva columna a una tabla existente
ALTER TABLE productos ADD COLUMN categoria VARCHAR(50);

-- Modificar el tipo de dato de una columna
ALTER TABLE productos MODIFY COLUMN precio DECIMAL(12,2);

DROP - Elimina objetos de la base de datos de forma permanente:

-- Eliminar una tabla completa
DROP TABLE productos_temporales;

-- Eliminar una base de datos completa
DROP DATABASE pruebas;

TRUNCATE - Vacía completamente una tabla manteniendo su estructura:

-- Eliminar todos los registros de una tabla
TRUNCATE TABLE logs_sistema;

RENAME - Cambia el nombre de objetos existentes:

-- Renombrar una tabla
RENAME TABLE productos TO articulos;

Características de los comandos DDL

Los comandos DDL tienen varias características distintivas que los diferencian de otros tipos de comandos SQL:

  • Autocommit automático: En la mayoría de sistemas gestores, los comandos DDL se ejecutan con confirmación automática, lo que significa que los cambios se aplican inmediatamente y no pueden deshacerse fácilmente.

  • Afectan la estructura: Estos comandos modifican el esquema de la base de datos, no los datos contenidos en las tablas (excepto como efecto secundario).

  • Requieren privilegios especiales: Para ejecutar comandos DDL normalmente necesitas permisos administrativos o de propietario sobre los objetos que vas a modificar.

  • Impacto en el rendimiento: Algunos comandos DDL pueden bloquear temporalmente las tablas afectadas, especialmente en bases de datos con gran volumen de información.

Objetos que gestionan los comandos DDL

Los comandos DDL pueden trabajar con diferentes tipos de objetos dentro de la base de datos:

  • Bases de datos: Contenedores principales que agrupan tablas y otros objetos
  • Tablas: Estructuras que almacenan los datos organizados en filas y columnas
  • Índices: Estructuras que mejoran el rendimiento de las consultas
  • Vistas: Consultas almacenadas que se comportan como tablas virtuales
  • Procedimientos almacenados: Bloques de código SQL reutilizable
  • Triggers: Código que se ejecuta automáticamente en respuesta a eventos

Consideraciones prácticas

Cuando trabajas con comandos DDL, es importante tener en cuenta que estos cambios suelen ser irreversibles y pueden tener un impacto significativo en las aplicaciones que dependen de la base de datos.

En entornos de producción, los comandos DDL requieren planificación cuidadosa. Por ejemplo, añadir una columna a una tabla con millones de registros puede tomar considerable tiempo y recursos del sistema.

Tanto MySQL como PostgreSQL ofrecen variaciones específicas de estos comandos, pero la sintaxis básica se mantiene consistente entre ambos sistemas, lo que facilita la portabilidad del código entre diferentes plataformas.

Comandos DML

El Data Manipulation Language (DML) es el subconjunto de SQL que se encarga de manipular los datos almacenados en las tablas de la base de datos. A diferencia del DDL que modifica la estructura, los comandos DML trabajan exclusivamente con el contenido de las tablas existentes.

Los comandos DML son operacionales y permiten realizar las cuatro operaciones fundamentales sobre los datos: crear nuevos registros, consultar información existente, actualizar datos y eliminar registros específicos. Estas operaciones forman el núcleo de la interacción diaria con cualquier base de datos.

Principales comandos DML

Los comandos DML esenciales que utilizarás constantemente en MySQL y PostgreSQL son:

SELECT - Consulta y recupera datos de una o más tablas:

-- Consultar todos los productos
SELECT * FROM productos;

-- Consultar productos específicos con condiciones
SELECT nombre, precio FROM productos WHERE categoria = 'electrónicos';

INSERT - Añade nuevos registros a una tabla:

-- Insertar un nuevo producto
INSERT INTO productos (nombre, precio, categoria) 
VALUES ('Smartphone', 599.99, 'electrónicos');

-- Insertar múltiples registros
INSERT INTO productos (nombre, precio, categoria) 
VALUES 
    ('Tablet', 299.99, 'electrónicos'),
    ('Auriculares', 89.99, 'accesorios');

UPDATE - Modifica datos existentes en una tabla:

-- Actualizar el precio de un producto específico
UPDATE productos 
SET precio = 549.99 
WHERE nombre = 'Smartphone';

-- Actualizar múltiples campos
UPDATE productos 
SET precio = precio * 0.9, categoria = 'ofertas' 
WHERE precio > 500;

DELETE - Elimina registros específicos de una tabla:

-- Eliminar un producto específico
DELETE FROM productos WHERE id = 5;

-- Eliminar productos por condición
DELETE FROM productos WHERE precio < 10;

Características de los comandos DML

Los comandos DML presentan características distintivas que los hacen fundamentales para el trabajo diario con bases de datos:

  • Transaccionales: Los comandos DML pueden agruparse en transacciones, permitiendo confirmar o deshacer cambios antes de que sean permanentes.

  • Afectan solo los datos: Estos comandos no modifican la estructura de las tablas, únicamente el contenido almacenado en ellas.

  • Permiten condiciones: La mayoría de comandos DML pueden incluir cláusulas WHERE para especificar exactamente qué registros deben procesarse.

  • Reversibles: A diferencia del DDL, los cambios realizados por comandos DML pueden deshacerse mediante transacciones o comandos de restauración.

Operaciones CRUD

Los comandos DML implementan las operaciones CRUD (Create, Read, Update, Delete), que representan las acciones básicas que cualquier aplicación necesita realizar sobre los datos:

  • Create (Crear): Implementado mediante INSERT para añadir nuevos registros
  • Read (Leer): Implementado mediante SELECT para consultar información existente
  • Update (Actualizar): Implementado mediante UPDATE para modificar datos existentes
  • Delete (Eliminar): Implementado mediante DELETE para remover registros específicos

Seguridad y control en comandos DML

Los comandos DML incluyen mecanismos de seguridad que previenen operaciones accidentales:

Uso de WHERE obligatorio: Es una práctica recomendada incluir siempre cláusulas WHERE en comandos UPDATE y DELETE para evitar modificar o eliminar todos los registros de una tabla:

-- Peligroso: actualiza TODOS los productos
UPDATE productos SET precio = 0;

-- Seguro: actualiza solo productos específicos
UPDATE productos SET precio = 0 WHERE categoria = 'descontinuados';

Confirmación de transacciones: En muchos entornos, los comandos DML requieren confirmación explícita:

-- Iniciar transacción
BEGIN;

-- Realizar cambios
UPDATE productos SET precio = precio * 1.1 WHERE categoria = 'premium';

-- Confirmar cambios
COMMIT;

Rendimiento y optimización

Los comandos DML pueden beneficiarse de índices y optimizaciones específicas. Las consultas SELECT son especialmente sensibles al rendimiento cuando trabajan con grandes volúmenes de datos.

Tanto MySQL como PostgreSQL optimizan automáticamente muchas operaciones DML, pero el diseño cuidadoso de consultas y el uso apropiado de índices puede mejorar significativamente el rendimiento en aplicaciones reales.

Los comandos DML forman la base de la interacción cotidiana con bases de datos, desde aplicaciones web simples hasta sistemas empresariales complejos, proporcionando las herramientas necesarias para gestionar eficientemente la información almacenada.

DDL vs DML: diferencias

Aunque tanto DDL como DML forman parte del lenguaje SQL, representan dos enfoques completamente diferentes para interactuar con las bases de datos. Comprender estas diferencias es fundamental para utilizar cada tipo de comando en el contexto apropiado y evitar errores comunes en el desarrollo de aplicaciones.

Diferencias en el propósito y alcance

La distinción más importante entre DDL y DML radica en qué aspecto de la base de datos afecta cada uno:

  • DDL se enfoca en la arquitectura: Define cómo se estructura la información, estableciendo el "contenedor" donde se almacenarán los datos
  • DML se enfoca en el contenido: Manipula la información que reside dentro de esas estructuras ya definidas

Esta diferencia fundamental determina cuándo y cómo utilizas cada tipo de comando en tus proyectos.

Diferencias en la permanencia de los cambios

Los comandos DDL y DML manejan la persistencia de manera muy diferente:

Comandos DDL - Cambios inmediatos:

-- Este comando se ejecuta inmediatamente y no puede deshacerse fácilmente
CREATE TABLE empleados (
    id INT PRIMARY KEY,
    nombre VARCHAR(100)
);

Comandos DML - Cambios controlables:

-- Estos comandos pueden agruparse en transacciones
BEGIN;
INSERT INTO empleados (id, nombre) VALUES (1, 'Ana García');
UPDATE empleados SET nombre = 'Ana García López' WHERE id = 1;
-- Puedes decidir si confirmar o deshacer
COMMIT; -- o ROLLBACK;

Diferencias en los permisos requeridos

El sistema de privilegios trata estos comandos de forma distinta:

  • DDL requiere permisos administrativos: Normalmente necesitas ser propietario de la base de datos o tener roles específicos como CREATE, ALTER, o DROP
  • DML requiere permisos operacionales: Basta con tener permisos de SELECT, INSERT, UPDATE, o DELETE sobre las tablas específicas

Esta diferencia refleja que modificar la estructura es una operación más crítica que manipular datos.

Diferencias en el impacto sobre el sistema

Los comandos DDL y DML afectan el rendimiento del sistema de maneras distintas:

Impacto de DDL:

  • Puede bloquear tablas durante la ejecución
  • Requiere más recursos del sistema
  • Puede invalidar planes de ejecución existentes
  • Afecta a todas las aplicaciones que usan la estructura modificada

Impacto de DML:

  • Bloqueos más granulares (a nivel de fila o página)
  • Impacto localizado en los datos específicos
  • Mejor control sobre el momento de ejecución
  • Posibilidad de optimización mediante índices

Diferencias en la frecuencia de uso

En el desarrollo de aplicaciones, la frecuencia de uso de cada tipo varía significativamente:

  • DDL se ejecuta esporádicamente: Durante el desarrollo inicial, migraciones de esquema, o mantenimiento programado
  • DML se ejecuta constantemente: Cada vez que un usuario interactúa con la aplicación, se realizan consultas, inserciones, actualizaciones o eliminaciones

Diferencias en la reversibilidad

La capacidad de deshacer cambios es muy diferente entre ambos tipos:

DDL - Difícil de revertir:

-- Si ejecutas esto por error...
DROP TABLE productos;
-- ...necesitas restaurar desde backup o recrear todo desde cero

DML - Fácil de revertir:

-- Si cometes un error...
BEGIN;
DELETE FROM productos WHERE categoria = 'electrónicos';
-- ...puedes deshacerlo inmediatamente
ROLLBACK;

Diferencias en el contexto de uso

Cada tipo de comando se utiliza en momentos diferentes del ciclo de vida de una aplicación:

Cuándo usar DDL:

  • Durante la fase de diseño de la base de datos
  • Al implementar nuevas funcionalidades que requieren cambios estructurales
  • Durante migraciones de versiones
  • En tareas de mantenimiento y optimización

Cuándo usar DML:

  • En la operación diaria de la aplicación
  • Para responder a acciones de usuarios
  • En procesos de importación y exportación de datos
  • Durante análisis y reportes

Diferencias en la sintaxis y complejidad

La complejidad sintáctica también varía entre ambos tipos:

  • DDL tiende a ser más declarativo: Describes qué estructura quieres, no cómo crearla
  • DML puede ser más complejo: Especialmente en consultas SELECT con múltiples JOIN, subconsultas y funciones agregadas

Consideraciones prácticas para el desarrollo

En la práctica, estas diferencias implican que debes planificar cuidadosamente el uso de cada tipo:

  • Para DDL: Realiza cambios en entornos de desarrollo primero, documenta las modificaciones y planifica ventanas de mantenimiento
  • Para DML: Implementa validaciones en la aplicación, utiliza transacciones apropiadamente y optimiza consultas frecuentes

Entender estas diferencias te permitirá tomar decisiones informadas sobre cuándo usar cada tipo de comando y cómo estructurar tus interacciones con la base de datos de manera eficiente y segura.

Aprende SQL online

Otras lecciones de SQL

Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Sql

Introducción Y Entorno

Introducción A Ddl

Introducción Y Entorno

Instalación De Mysql

Introducción Y Entorno

Instalación De Postgresql

Introducción Y Entorno

Tipos De Datos

Introducción Y Entorno

Bases De Datos Y Tablas

Introducción Y Entorno

Sistemas De Gestión De Bases De Datos

Introducción Y Entorno

Tipos De Bases De Datos

Introducción Y Entorno

Definición De Ddl Y Dml

Introducción Y Entorno

Creación Con Create

Sintaxis Dml Crud

Consultas Básicas De Selección: Select Y Where

Sintaxis Dml Crud

Inserción De Datos: Insert Into

Sintaxis Dml Crud

Actualización De Datos: Update

Sintaxis Dml Crud

Eliminación De Datos: Delete

Sintaxis Dml Crud

Introducción A Dml

Sintaxis Dml Crud

Consultar Datos: Select

Sintaxis Dml Crud

Clasificación De Resultados Con Order By

Filtros Y Clasificación

Filtrado De Valores Únicos Con Distinct

Filtros Y Clasificación

Paginación Con Limit Y Offset

Filtros Y Clasificación

Modificar Con Alter

Sintaxis Ddl

Renombrar Con Rename

Sintaxis Ddl

Borrar Con Drop

Sintaxis Ddl

Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min

Funciones Y Agrupación

Agrupación De Resultados Con Group By

Funciones Y Agrupación

Filtrado De Grupos De Resultados Con Having

Funciones Y Agrupación

Funciones Numéricas Y Matemáticas

Funciones Y Agrupación

Funciones De Fecha Y Hora

Funciones Y Agrupación

Funciones De Texto

Funciones Y Agrupación

Many To One

Asociaciones Entre Tablas

One To Many

Asociaciones Entre Tablas

One To One

Asociaciones Entre Tablas

Many To Many

Asociaciones Entre Tablas

Relaciones Entre Tablas

Joins Y Subqueries

Uso De Inner Join

Joins Y Subqueries

Creación Y Uso De Subqueries

Joins Y Subqueries

Left Join Y Right Join

Joins Y Subqueries

Full Join

Joins Y Subqueries

Cross Join Y Self Join

Joins Y Subqueries

Optimización De Consultas

Sintaxis Avanzada

Uso De Índices Y Particiones

Sintaxis Avanzada

Uso De Vistas

Sintaxis Avanzada

Triggers Y Eventos

Sintaxis Avanzada

Particiones

Sintaxis Avanzada

Restricciones E Integridad

Sintaxis Avanzada

Transacciones

Sintaxis Avanzada

Vistas Materializadas

Sintaxis Avanzada

Rollback

Sintaxis Avanzada

Vistas Con Create View

Sintaxis Avanzada

Principios Acid

Sintaxis Avanzada

Manejo De Errores Y Excepciones

Sintaxis Avanzada

Funciones Ventana

Sintaxis Avanzada

Índices

Sintaxis Avanzada

Expresiones De Tabla Comunes (Cte) Con With

Sintaxis Avanzada

Creación Y Uso De Funciones

Programación En Sql

Creación Y Uso De Procedimientos Almacenados

Programación En Sql

Variables Y Control De Flujo

Programación En Sql

Creación Y Manejo De Usuarios Y Roles

Seguridad Y Administración

Asignación Y Gestión De Permisos

Seguridad Y Administración

Copias De Seguridad Y Restauración De Bases De Datos

Seguridad Y Administración

Accede GRATIS a SQL y certifícate

Ejercicios de programación de SQL

Evalúa tus conocimientos de esta lección Definición de DDL y DML con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Tipos de datos

Test

Inserción de datos: INSERT INTO

Test

Filtrado de grupos de resultados con HAVING

Test

Uso de índices y particiones

Test

Renombrar tablas y bases de datos: RENAME

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Agrupación de resultados con GROUP BY

Test

Creación y uso de subqueries

Test

Sentencias INSERT

Código

Copias de seguridad y restauración de bases de datos

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Eliminación de datos: DELETE

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Creación y uso de funciones

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Clasificación de resultados con ORDER BY

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Eliminación de datos: DELETE

Código

Instalación de PostgreSQL

Test

Creación y uso de procedimientos almacenados

Test

Consultas básicas de selección: SELECT y WHERE

Test

Vaciar tablas y bases de datos: DROP

Test

Actualización de datos: UPDATE

Test

Creación y manejo de usuarios y roles

Test

Consultas básicas de selección SELECT y WHERE

Código

Creación de bases de datos y tablas

Código

Bases de datos y tablas

Test

Actualización de datos: UPDATE

Código

Relaciones entre tablas

Test

Filtrado de valores únicos con DISTINCT

Test

Asignación y gestión de permisos

Test

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender qué es el lenguaje de definición de datos (DDL) y sus comandos principales.
  • Identificar las funciones y características del lenguaje de manipulación de datos (DML).
  • Diferenciar claramente entre los propósitos y efectos de los comandos DDL y DML.
  • Reconocer la importancia de los permisos y el impacto en el sistema de cada tipo de comando.
  • Aplicar buenas prácticas en el uso de comandos DDL y DML en entornos reales de bases de datos.