Saltar la navegación

5.3.- Supresión de registros a partir de una consulta.

Diagrama con icono de base de datos, tablas y símbolo de borrado.
Ministerio de Educación. (Uso Educativo nc)

Al igual que las sentencias INSERT y UPDATE vistas anteriormente, también se pueden hacer borrados de registros utilizando consultas como parte de las tablas donde se hará la eliminación o como parte de la condición que delimita la operación.

Por ejemplo, si se ejecuta la siguiente sentencia:

DELETE FROM (SELECT LOGIN FROM USUARIOS, UNEN WHERE CODIGO_USUARIO=LOGIN AND PROVINCIA='PALENCIA');

El resultado es que se eliminan determinados registros de las tablas USUARIOS y UNEN, en concreto, aquellos registros de la tabla UNEN asociados a algún usuario de PALENCIA.

Puedes observar que no se ha establecido ninguna condición WHERE en la sentencia, ya que se ha incluido dentro de la consulta. Otra manera de realizar la misma acción, pero utilizando la cláusula WHERE es la siguiente:

DELETE FROM (SELECT LOGIN, PROVINCIA FROM USUARIOS, UNEN WHERE CODIGO_USUARIO=LOGIN) WHERE PROVINCIA='PALENCIA';

Autoevaluación

Pregunta

¿Cuál de las siguientes sentencias DELETE es la correcta para eliminar de la tabla USUARIOS todos aquellos cuyo código se encuentra en una tabla llamada ANTIGUOS?

Respuestas

DELETE FROM USUARIOS WHERE Codigo IN (SELECT Codigo FROM ANTIGUOS);

DELETE FROM USUARIOS WHERE Codigo IN ANTIGUOS;

DELETE FROM (SELECT Codigo FROM ANTIGUOS) WHERE Codigo IN (SELECT Codigo FROM USUARIOS);

DELETE FROM Codigo WHERE USUARIOS IN (SELECT Codigo FROM ANTIGUOS);

Retroalimentación