Eliminar registros con DELETE en Oracle

Eliminar registros con DELETE en Oracle es una tarea fundamental en la gestión de bases de datos. En este artículo, explicaré cómo utilizar la instrucción DELETE para eliminar registros de una tabla en Oracle. Esta sentencia permite borrar datos específicos según las condiciones definidas en la cláusula WHERE. Si no se utiliza WHERE, todos los registros de la tabla serán eliminados, por lo que es crucial comprender bien su funcionamiento para evitar eliminar datos de forma accidental.

La instrucción DELETE es especialmente útil cuando necesitamos mantener la integridad de los datos y eliminar solo aquellos registros que cumplan criterios específicos, como fechas, identificadores o valores concretos en una columna. A lo largo de este artículo, primero mostraré la sintaxis básica de DELETE y luego profundizaré en ejemplos prácticos que ilustran cómo aplicarla en distintos escenarios comunes.

Es importante destacar que, al usar esta instrucción, los cambios no son permanentes hasta que se ejecute un COMMIT. Esto ofrece la flexibilidad de revertir los cambios si se comete un error, utilizando ROLLBACK.

Para más información, puedes consultar la documentación oficial de ORACLE.

Sintaxis para eliminar registros en Oracle

Para llevar a cabo la eliminación de registros en Oracle, utilizamos una sintaxis específica que permite borrar datos de una tabla de forma controlada. Esta operación se realiza mediante la cláusula DELETE, que puede ser complementada con la condición WHERE para especificar qué registros deben ser eliminados. La sintaxis es clara y efectiva, lo que garantiza un manejo preciso de los datos. A continuación, te muestro la estructura básica:

delete from nombreTabla
where condicion

En la sintaxis anterior:

  • Primero decimos de qué tabla queremos borrar los datos. Escribimos delete from seguido del nombre de la tabla.
  • En segundo lugar, después de la palabra where escribimos cuando debe borrar los datos.

Ten en cuenta que la cláusula WHERE es opcional y si no lo especificas borrará toda la tabla.

Al realizar un borrado nos devolverá un mensaje informando de cuántas filas se han borrado.

La cláusula DELETE en Oracle se utiliza exclusivamente para eliminar datos almacenados en una tabla, pero no realiza ninguna modificación en la estructura de la tabla. Su propósito se limita al manejo del contenido, garantizando que la estructura y definición de la tabla permanezcan intactas.

Ejemplos

Borrar toda la tabla

Aunque se puede eliminar todo el contenido de una tabla utilizando la cláusula DELETE, esta práctica no es recomendable debido a su menor eficiencia. Si necesitas borrar todos los datos de una tabla de manera más rápida y óptima, lo ideal es utilizar la cláusula TRUNCATE. Además, TRUNCATE es más eficiente porque opera a nivel de páginas de datos y no genera tantas entradas en el registro de transacciones.

delete from empleados;

Borrar registros que cumplan la condición

En el siguiente ejemplo, puedes ver cómo se eliminan todos los registros de empleados que cumplen con la condición especificada:

delete from empleados
where id_empleado = 3;

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios.

-- Borramos la tabla por si ya existía
DROP TABLE empleados;

--Creamos la tabla de empleados
CREATE TABLE empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    sueldo integer
);

-- Insertamos registros de ejemplo
INSERT INTO empleados  VALUES (1,1,'Miguel Troyano','Analista', 60000);
INSERT INTO empleados  VALUES (2,1,'Ismael Troyano','Analista', 60000);
INSERT INTO empleados  VALUES (3,1,'Jose Troyano','Director', 80000);
INSERT INTO empleados  VALUES (4,1,'Pilar Troyano','Directora', 80000);

-- Consultamos los datos
select *
from empleados;

-- borramos el registro de Jose
delete from empleados
where id_empleado = 3;
commit;

-- Consultamos de nuevo los datos
select *
from empleados;

-- Borramos toda la tabla
delete from empleados;
commit;

Escribir un comentario