Sentencia DELETE

Borra filas de una tabla.

Sintaxis

DELETE FROM tabla [WHERE condición]

Entradas

tabla: Nombre de una tabla existente.

condición: Se trata de una consulta SQL de selección que retorna las filas a borrar.

En el capítulo dedicado a la sentencia SELECT encontrarás información sobre la cláusula WHERE.

La condición de búsqueda en la sentencia DELETE puede ser uno de los predicados siguientes:

  • Predicado de comparación.
  • Predicado BETWEEN.
  • Predicado IN.
  • Predicado LIKE.
  • Pedicado NULL.
  • Predicado de compración cuantificada.
  • Predicado EXISTS.

Salidas

DELETE count

Mensaje retornado si los elementos son borrados satisfactoriamente. “count” es el número de filas borradas. Si es 0, querrá decir que no se ha borrado ninguna fila.

Formas de la sentencia DELETE

Forma básica: Borrar todos los registros de una tabla:

Ejemplos:

DELETE FROM ANEXOS;

Cláusuala WHERE, sub consultas

Busca registros basándose en una condición y borra solamente aquellos que la cumplen. La condición de búsqueda puede tener cualesquiera predicados y sub consultas.

Ejemplos categorizados basados en predicados:

Predicado LIKE

DELETE FROM ANEXOS WHERE NOMBRE LIKE  ‘%Val%’

Encontrará todas las cadenas que incluyan la cadena “Val”.

DELETE FROM ANEXOS WHERE NOMBRE LIKE ‘ab_cd’

Encontrará todas las cadenas que tengan 5 caracteres que comiencen por “ab” y terminen en “cd”.

DELETE FROM ANEXOS WHERE NOMBRE LIKE ‘ab%cd%’

Encontrará todas las cadenas que comiencen por “ab%cd”.

DELETE FROM ANEXOS WHERE NOMBRE LIKE ‘ab_cd%’

Encontrará todas las cadenas que comiencen por “ab_cd”.

DELETE FROM ANEXOS WHERE NOMBRE LIKE ‘ab\cd%’     

Encontrará todas las cadenas que comiencen por “abcd”.

DELETE FROM ANEXOS WHERE NOMBRE NOT LIKE ‘ab\cd%’

Encontrará todas las cadenas que no comiencen por “abcd”.

Predicado de comparación

DELETE FROM ANEXOS WHERE CODIGO = 1500;
DELETE FROM ANEXOS WHERE CODIGO > 3000;
DELETE FROM ANEXOS WHERE CODIGO = 20;
DELETE FROM ANEXOS WHERE CODIGO <= 1500;
DELETE FROM ANEXOS WHERE CODIGO  3000;

Operadores lógicos

DELETE FROM ANEXOS WHERE CODIGO = 10 AND CODIGO = 20;
DELETE FROM ANEXOS WHERE CODIGO = 10 OR CODIGO = 20;

Predicado BETWEEN

DELETE FROM ANEXOS WHERE CODIGO BETWEEN 30 AND 50;
DELETE FROM ANEXOS WHERE CODIGO NOT BETWEEN 3 AND 5;

Predicado IN

DELETE FROM ANEXOS WHERE CODIGO IN (10,20);
DELETE FROM ANEXOS WHERE CODIGO NOT IN (10,20);

Predicado NULL

DELETE FROM ANEXOS WHERE CODIGO IS NOT NULL;
DELETE FROM ANEXOS WHERE CODIGO IS NULL;

Predicado de comparación cuantificada

DELETE FROM ANEXOS WHERE CODIGO >= ALL (SELECT CODIGO FROM IDIOMAS);
DELETE FROM ANEXOS WHERE CODIGO = SOME (SELECT CODIGO FROM IDIOMAS);

Pedicado EXISTS

DELETE FROM ANEXOS WHERE EXISTS (SELECT CODIGO FROM IDIOMAS WHERE NOMBRE IS NULL);

Notas de uso

Si no se especifica ninguna cláusula WHERE, serán borradas todas las filas de la tabla.