3.3.2 DELETE
Aquesta sentència servirà per esborrar files senceres d'una determinada taula.
Si es volen esborrar només alguns camps d'una o unes determinades files, no s'ha d'utilitzar aquesta sentència, sinó que s'haurà d'utilitzar la sentència UPDATE per a posar els camps a NULL.
Sintaxi
DELETE FROM taula
[WHERE condició]
S'esborraran les files que acomplesquen la condició. Si no es posa el WHERE s'esborraran tetes les files de la taula (però no la mateixa taula, l'estructura; és a dir, continuarà existint la taula, però buida).
Per la perillositat de la sentència, és convenient fer primer una sentència SELECT, i quan estiguem segurs que se seleccionen només les files que volem esborrar, canviar-la per DELETE. També és molt convenient fer còpies de seguretat de les taules o de tota la Base de Dades.
Exemples
-
Esborrar totes les files de EMPLEAT2
DELETE FROM EMPLEAT2;
- Esborrar d'EMPLEAT3 els empleats del departament 7
DELETE FROM EMPLEAT3
WHERE departament=7;
-
Esborrar d'EMPLEAT3 els empleats majors de 47 anys (en realitat no s'esborrarà cap perquè no tenim introduïda la data de naixement)
DELETE FROM EMPLEAT3
WHERE EXTRACT(year FROM AGE(CURRENT_DATE,data_naixement) )>=47;
-
Esborrar d'EMPLEAT aquells empleats que trebalen en projectes menys de 20 hores (no es molt convenient confirmar l'eliminació dels registres ja que ens quedaríem sense dades importants)
DELETE FROM EMPLEAT
WHERE dni IN (SELECT dni
FROM TREBALLA
GROUP BY dni
HAVING SUM(hores)<20);
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0