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 FROMindica la tabla sobre la que se trabajará.WHEREdetermina 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 FROMelimina registros.WHEREdefine qué filas serán afectadas.- Sin
WHERE, se eliminan todos los registros de la tabla. - Es una buena práctica ejecutar primero un
SELECTpara validar qué datos serán eliminados. - Después del borrado, es recomendable ejecutar otro
SELECTpara 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