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ícateComandos 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
, oDROP
- DML requiere permisos operacionales: Basta con tener permisos de
SELECT
,INSERT
,UPDATE
, oDELETE
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.
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
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
Inserción de datos: INSERT INTO
Filtrado de grupos de resultados con HAVING
Uso de índices y particiones
Renombrar tablas y bases de datos: RENAME
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Agrupación de resultados con GROUP BY
Creación y uso de subqueries
Sentencias INSERT
Copias de seguridad y restauración de bases de datos
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Eliminación de datos: DELETE
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Creación y uso de funciones
Creación de tablas e inserción de datos con SQL
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Optimización de consultas
Introducción a SQL
Triggers y eventos
Clasificación de resultados con ORDER BY
Alterar la estructura de tablas existentes: ALTER TABLE
Eliminación de datos: DELETE
Instalación de PostgreSQL
Creación y uso de procedimientos almacenados
Consultas básicas de selección: SELECT y WHERE
Vaciar tablas y bases de datos: DROP
Actualización de datos: UPDATE
Creación y manejo de usuarios y roles
Consultas básicas de selección SELECT y WHERE
Creación de bases de datos y tablas
Bases de datos y tablas
Actualización de datos: UPDATE
Relaciones entre tablas
Filtrado de valores únicos con DISTINCT
Asignación y gestión de permisos
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.