Databases

T02-003- Borrado de registros.

Enunciado

La sentencia DELETE es la que permite eliminar o borrar registros de un tabla.

Sintaxis

Esta es la sintaxis que debes tener en cuenta para utilizarla:

DELETE FROM nombre_tabla [ WHERE condición ];

Al igual que hemos visto en las sentencias anteriores, nombre_tabla hace referencia a la tabla sobre la que se hará la operación, en este caso de borrado. Se puede observar que la cláusula WHERE es opcional. Si no se indica, debes tener muy claro que se borrará todo el contenido de la tabla, aunque la tabla seguirá existiendo con la estructura que tenía hasta el momento.

Ejemplo

Podemos eliminar todos los registros de la tabla job_history con la siguiente sentencia:

DELETE FROM job_history;

La necesidad de eliminar todos los registros no es habitual en la realidad y, para esos casso, existe una sentencia alternativa, que permite eliminar todo el contenido de una tabla sin eliminar su estructura:

TRUNCATE TABLE job_history;

Nota: La sentencia TRUNCATE no se puede deshacer, por lo que un ROLLBACK posterior no restablecería los registros de la tabla.

La sentencia DELETE suele requerir el uso de la cláusula WHERE: los registros que se eliminen serán aquellos que cumplan las restricciones establecidas en el WHERE.

En el siguiente ejemplo, eliminaremos los registros de la tabla job_history cuya fecha de finalización sea anterior al año 2005:

DELETE FROM job_history
WHERE EXTRACT(YEAR FROM END_DATE) < 2005;

Ejercicio

Elimina todos los departamentos que no tienen ningún MANAGER_ID asignado.

Nota: recuerda que en Juez-LTI debes cualificar las tablas con el esquema HR

Tipo

DML

Solución


												
DELETE FROM HR.departments WHERE MANAGER_ID IS NULL;

Prueba


											
SELECT * FROM HR.DEPARTMENTS WHERE DEPARTMENT_ID BETWEEN 100 AND 150 ORDER BY DEPARTMENT_ID

Librerías (Onfly databases)