...

DDL en SQL: crea, modifica y elimina estructuras de base de datos

En SQL, hemos aprendido a consultar, modificar y controlar datos. Pero antes de todo eso, necesitamos algo fundamental: crear la estructura donde vivirán los datos.

Ahí entra en juego el DDL (Data Definition Language) o Lenguaje de Definición de Datos, que nos permite definir, modificar y eliminar objetos dentro de una base de datos: tablas, vistas, índices, procedimientos y más.

En esta entrega aprenderás los tres comandos esenciales del DDL: CREATE, ALTER y DROP. Veremos cómo funcionan, sus diferencias con DML, y ejemplos prácticos que puedes ejecutar en db-fiddle.com.


¿Qué es DDL en SQL?

El DDL (Data Definition Language) define la estructura y el esquema de una base de datos.
A diferencia del DML (Data Manipulation Language), que trabaja con los datos (INSERT, UPDATE, DELETE), el DDL trabaja con los objetos que los contienen.

Principales comandos del DDL:

ComandoDescripción
CREATECrea un nuevo objeto (tabla, vista, índice, base de datos, etc.)
ALTERModifica un objeto existente (por ejemplo, una tabla)
DROPElimina un objeto permanentemente

Estos comandos afectan la estructura, no el contenido. Una vez ejecutados, suelen tener efectos permanentes (especialmente DROP).


Diferencia entre DDL y DML

AspectoDDLDML
EnfoqueEstructuraDatos
EjemplosCREATE, ALTER, DROPINSERT, UPDATE, DELETE
TransaccionesGeneralmente automáticasControladas por el usuario
Uso típicoCrear o modificar tablasInsertar o cambiar registros

Ejemplo práctico

Comencemos con un ejemplo reproducible en db-fiddle.com.
Imagina que estamos construyendo una base de datos para una empresa que quiere registrar sus empleados y departamentos.

1. Crear una tabla con CREATE TABLE

-- Crear la tabla departamentos
CREATE TABLE departamentos (
    id_departamento INTEGER PRIMARY KEY,
    nombre TEXT NOT NULL
);

-- Crear la tabla empleados
CREATE TABLE empleados (
    id_empleado INTEGER PRIMARY KEY,
    nombre TEXT NOT NULL,
    puesto TEXT NOT NULL,
    salario REAL,
    id_departamento INTEGER,
    FOREIGN KEY (id_departamento) REFERENCES departamentos(id_departamento)
);

Qué hace este código:

  • Define dos tablas: departamentos y empleados.
  • Usa una clave foránea (FOREIGN KEY) para conectar ambas.
  • Establece reglas de integridad: no se puede asignar un id_departamento que no exista.

2. Insertar algunos datos iniciales

INSERT INTO departamentos (id_departamento, nombre)
VALUES
(1, 'Recursos Humanos'),
(2, 'Finanzas'),
(3, 'Tecnología');

INSERT INTO empleados (id_empleado, nombre, puesto, salario, id_departamento)
VALUES
(1, 'Ana López', 'Analista', 1200, 1),
(2, 'Carlos Ruiz', 'Desarrollador', 1800, 3),
(3, 'Lucía Gómez', 'Contadora', 1500, 2);

3. Modificar la estructura con ALTER TABLE

Ahora necesitamos agregar una nueva columna para guardar la fecha de contratación.

ALTER TABLE empleados
ADD COLUMN fecha_contratacion TEXT;

Y si deseamos cambiar el nombre de una columna (solo en algunos motores, como SQL Server o PostgreSQL):

-- Cambiar nombre de columna (solo SQL Server)
EXEC sp_rename 'empleados.puesto', 'cargo', 'COLUMN';

💡 En SQLite, no es posible cambiar nombres de columnas con ALTER TABLE; se debe recrear la tabla.


4. Eliminar un objeto con DROP

Cuando ya no necesitamos una tabla o queremos limpiar la base de datos:

-- Eliminar una tabla
DROP TABLE empleados;

-- Eliminar una base de datos (solo en algunos motores)
DROP DATABASE empresa;

⚠️ Advertencia:
DROP elimina el objeto y todos sus datos de forma permanente. No hay “papelera de reciclaje” en SQL, por eso siempre conviene hacer un backup previo.


Diferencias entre motores SQL

MotorCambiar nombre de columnaAgregar columnaEliminar columna
SQLiteNo (recrear tabla)Desde la versión 3.35
SQL ServerSí (sp_rename)
MySQLSí (ALTER TABLE ... CHANGE)
PostgreSQLSí (ALTER TABLE ... RENAME COLUMN)

Buenas prácticas con DDL

  1. Planifica antes de crear: define tipos de datos adecuados.
  2. Evita eliminar tablas sin respaldo.
  3. Usa nombres consistentes (en minúsculas, sin espacios, descriptivos).
  4. Registra los cambios estructurales en un control de versiones (como Git).
  5. Prueba en entornos de desarrollo antes de ejecutar DDL en producción.

Prueba este script

Puedes probar este ejemplo completo copiando y pegando el siguiente bloque en db-fiddle.com:

CREATE TABLE departamentos (
    id_departamento INTEGER PRIMARY KEY,
    nombre TEXT NOT NULL
);

CREATE TABLE empleados (
    id_empleado INTEGER PRIMARY KEY,
    nombre TEXT NOT NULL,
    puesto TEXT NOT NULL,
    salario REAL,
    id_departamento INTEGER,
    FOREIGN KEY (id_departamento) REFERENCES departamentos(id_departamento)
);

INSERT INTO departamentos VALUES
(1, 'Recursos Humanos'),
(2, 'Finanzas'),
(3, 'Tecnología');

INSERT INTO empleados VALUES
(1, 'Ana López', 'Analista', 1200, 1),
(2, 'Carlos Ruiz', 'Desarrollador', 1800, 3),
(3, 'Lucía Gómez', 'Contadora', 1500, 2);

ALTER TABLE empleados ADD COLUMN fecha_contratacion TEXT;

SELECT * FROM empleados;

Conclusión

El DDL es el punto de partida para construir bases de datos sólidas.
Con CREATE, ALTER y DROP defines las reglas del juego: cómo se guardan, relacionan y eliminan los datos.

Dominar estos comandos te da control total sobre la estructura, y es el paso natural después de aprender a manipular información con DML.

Deja un comentario

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.