viernes, 17 de julio de 2026

🐘 Eliminar Datos en PostgreSQL con DELETE

Hasta este punto hemos aprendido a:

  • Crear tablas (CREATE TABLE)
  • Insertar datos (INSERT)
  • Consultar información (SELECT)
  • Actualizar registros (UPDATE)

La cuarta operación fundamental de SQL es DELETE, que permite eliminar registros de una tabla.


🧠 ¿Qué es DELETE?

La instrucción DELETE se utiliza para eliminar una o varias filas de una tabla.

Sintaxis general:

DELETE FROM nombre_tabla
WHERE condicion;

Donde:

  • DELETE FROM indica la tabla sobre la que se trabajará.
  • WHERE determina qué registros serán eliminados.

⚠️ La importancia de WHERE

Al igual que en UPDATE, la cláusula WHERE es fundamental.

Si omites el WHERE, PostgreSQL eliminará todos los registros de la tabla.

Por ejemplo:

DELETE FROM empleados;

Esto eliminará todas las filas almacenadas en empleados.

Por esa razón, antes de ejecutar un DELETE, es una buena práctica validar los registros afectados utilizando un SELECT.


🏗️ Ejemplo Completo

Paso 1: Crear una tabla

CREATE TABLE empleados (
    id INTEGER,
    nombre VARCHAR(100),
    departamento VARCHAR(100),
    salario NUMERIC(10,2),
    activo BOOLEAN,
    fecha_ingreso DATE
);

Paso 2: Insertar registros

INSERT INTO empleados (
    id,
    nombre,
    departamento,
    salario,
    activo,
    fecha_ingreso
)
VALUES
(
    1,
    'Juan Pérez',
    'Tecnología',
    25000.00,
    TRUE,
    '2026-01-15'
),
(
    2,
    'Ana López',
    'Finanzas',
    32000.00,
    TRUE,
    '2026-02-01'
),
(
    3,
    'Carlos García',
    'Recursos Humanos',
    28000.00,
    FALSE,
    '2026-03-10'
),
(
    4,
    'María Rodríguez',
    'Tecnología',
    35000.00,
    TRUE,
    '2026-04-05'
);

Paso 3: Consultar los registros existentes

SELECT *
FROM empleados;

Resultado:

 id | nombre            | departamento       | salario
----+-------------------+--------------------+----------
 1  | Juan Pérez        | Tecnología         | 25000.00
 2  | Ana López         | Finanzas           | 32000.00
 3  | Carlos García     | Recursos Humanos   | 28000.00
 4  | María Rodríguez   | Tecnología         | 35000.00

🗑️ Eliminar un registro específico

Supongamos que necesitamos eliminar el empleado con ID 3.

Antes de eliminarlo, podemos verificar su existencia:

SELECT *
FROM empleados
WHERE id = 3;

Luego ejecutamos:

DELETE FROM empleados
WHERE id = 3;

Verificar el resultado

SELECT *
FROM empleados;

Resultado:

 id | nombre            | departamento
----+-------------------+--------------
 1  | Juan Pérez        | Tecnología
 2  | Ana López         | Finanzas
 4  | María Rodríguez   | Tecnología

El empleado con ID 3 ya no existe.


🗑️ Eliminar varios registros

También es posible eliminar múltiples registros mediante una condición.

Por ejemplo, eliminar todos los empleados del departamento de Tecnología:

Primero verificamos:

SELECT *
FROM empleados
WHERE departamento = 'Tecnología';

Después eliminamos:

DELETE FROM empleados
WHERE departamento = 'Tecnología';

Consultar los datos restantes

SELECT *
FROM empleados;

Resultado:

 id | nombre
----+------------
 2  | Ana López

🗑️ Eliminar registros utilizando una condición numérica

Por ejemplo:

DELETE FROM empleados
WHERE salario < 30000;

Esto eliminará todos los empleados cuyo salario sea menor a 30,000.

Antes de ejecutar el borrado es recomendable revisar los registros afectados:

SELECT *
FROM empleados
WHERE salario < 30000;

🗑️ Eliminar registros utilizando valores booleanos

Podemos eliminar todos los empleados inactivos:

DELETE FROM empleados
WHERE activo = FALSE;

Verificación previa:

SELECT *
FROM empleados
WHERE activo = FALSE;

🗑️ Eliminar registros utilizando fechas

Supongamos que queremos eliminar empleados que ingresaron antes del año 2026.

DELETE FROM empleados
WHERE fecha_ingreso < '2026-01-01';

Consulta previa:

SELECT *
FROM empleados
WHERE fecha_ingreso < '2026-01-01';

❌ Eliminar todos los registros

Si deseas vaciar completamente una tabla:

DELETE FROM empleados;

Después de ejecutarlo:

SELECT *
FROM empleados;

Resultado:

(0 filas)

La tabla sigue existiendo, pero ya no contiene datos.


🔍 Flujo recomendado antes de un DELETE

Una práctica muy común es seguir este orden:

1. Verificar registros

SELECT *
FROM empleados
WHERE departamento = 'Tecnología';

2. Ejecutar DELETE

DELETE FROM empleados
WHERE departamento = 'Tecnología';

3. Confirmar resultado

SELECT *
FROM empleados;

Este enfoque reduce significativamente el riesgo de eliminar registros incorrectos.


💡 Buenas prácticas

Siempre valida con SELECT

✅ Recomendado:

SELECT *
FROM empleados
WHERE id = 3;

Luego:

DELETE FROM empleados
WHERE id = 3;

Utiliza condiciones específicas

✅ Más seguro:

DELETE FROM empleados
WHERE id = 3;

⚠️ Más riesgoso:

DELETE FROM empleados
WHERE departamento = 'Tecnología';

Porque puede afectar múltiples registros.


Verifica cuántas filas serán eliminadas

Antes del borrado:

SELECT *
FROM empleados
WHERE salario < 30000;

Esto permite revisar exactamente qué registros desaparecerán.


🧪 Ejemplo completo

Crear tabla

CREATE TABLE productos (
    codigo INTEGER,
    nombre VARCHAR(100),
    categoria VARCHAR(100),
    precio NUMERIC(10,2),
    disponible BOOLEAN
);

Insertar datos

INSERT INTO productos (
    codigo,
    nombre,
    categoria,
    precio,
    disponible
)
VALUES
(1001, 'Laptop', 'Computadoras', 18000.00, TRUE),
(1002, 'Monitor', 'Periféricos', 4200.00, TRUE),
(1003, 'Teclado', 'Accesorios', 700.00, FALSE);

Consultar productos

SELECT *
FROM productos;

Verificar cuáles serán eliminados

SELECT *
FROM productos
WHERE disponible = FALSE;

Eliminar productos no disponibles

DELETE FROM productos
WHERE disponible = FALSE;

Consultar resultado final

SELECT *
FROM productos;

✅ Conclusión

La instrucción DELETE permite eliminar registros de una tabla de PostgreSQL. Aunque su sintaxis es sencilla, debe utilizarse con cuidado, especialmente cuando se trabaja sobre tablas con información importante.

Los puntos más importantes son:

  • DELETE FROM elimina registros.
  • WHERE define qué filas serán afectadas.
  • Sin WHERE, se eliminan todos los registros de la tabla.
  • Es una buena práctica ejecutar primero un SELECT para validar qué datos serán eliminados.
  • Después del borrado, es recomendable ejecutar otro SELECT para confirmar el resultado.

El siguiente tema ideal para la serie es Restricciones (Constraints), comenzando por NOT NULL, ya que nos permitirá controlar qué datos pueden almacenarse en nuestras tablas.

No hay comentarios:

Publicar un comentario