El DELETE
puede usarse para eliminar datos en una tabla.
El WHERE
La cláusula se puede usar para especificar exactamente qué filas se deben eliminar.
Puede eliminar todas las filas, algunas filas o ninguna, según las condiciones de filtrado aplicadas por WHERE
cláusula.
Una eliminación simple
Primero, busquemos un artista para eliminar:
sqlite> SELECT * FROM Artists; ArtistId ArtistName Bio -------- -------------------- ---------------------------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere Australian jazz band centred around poly 9 Ian Moss 10 Magnum 11 Strapping Young Lad 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambale 16 Mothers of Invention 17 The Wiggles
Bien, eliminemos el número de artista 12 (Asesino).
Aquí está la declaración de eliminación simple que elimina ese registro de los Artistas tabla:
DELETE FROM Artists WHERE ArtistId = 12;
Entonces, después de ejecutar eso, podemos verificar que el registro se eliminó de hecho con SELECT
declaración:
sqlite> SELECT * FROM Artists WHERE ArtistId = 12; sqlite>
(Sin resultados).
Eliminación de datos con una restricción de clave externa
Si intenta eliminar un registro al que hace referencia una clave externa, debería obtener un error. Primero deberá eliminar los registros de la clave externa, antes de eliminar el registro de la clave principal.
Por ejemplo, ID de artista 17 (de los Artistas table) pasa a estar referenciado por dos registros en Albums (consulte la tabla ArtistId columna):
sqlite> SELECT * FROM Albums WHERE ArtistId = 17; AlbumId AlbumName ReleaseDate ArtistId -------- -------------------- ------------ ------------ 5 Yummy Yummy 1994 17 13 Big Red Car 1995 17
Entonces, si intentamos eliminar al artista 17 de la tabla Artistas (que contiene la clave principal), deberíamos obtener un error.
Aquí está la declaración de eliminación:
DELETE FROM Artists WHERE ArtistId = 17;
Y aquí está el resultado:
sqlite> DELETE FROM Artists ...> WHERE ArtistId = 17; Error: FOREIGN KEY constraint failed sqlite>
Por lo tanto, debemos eliminar los registros de la clave externa antes de eliminar la clave principal.
Si no obtuvo una
Falló la restricción FOREIGN KEY
mensaje, es posible que deba habilitar la verificación de restricciones de clave externa. Ejecute PRAGMA foreign_keys = ON;
para habilitar las comprobaciones de restricciones de clave externa.
Eliminar registros asociados
Entonces, eliminemos los registros asociados en los Álbumes tabla, antes de volver a intentar la declaración de eliminación anterior.
DELETE FROM Albums WHERE ArtistId = 17;
Comprueba que se hayan eliminado:
sqlite> SELECT * FROM Albums WHERE ArtistId = 17; sqlite>
(Sin resultados).
Ahora intentemos la declaración de eliminación original de nuevo:
DELETE FROM Artists WHERE ArtistId = 17;
Parece prometedor, no hay error:
sqlite> DELETE FROM Artists ...> WHERE ArtistId = 17; sqlite>
Y un SELECT
declaración confirma la eliminación:
sqlite> SELECT * FROM Artists WHERE ArtistId = 17; sqlite>
Sin resultados.
Eliminar todas las filas
Puede eliminar todas las filas de una tabla omitiendo WHERE
cláusula.
Tenemos una mesa libre ( Albums1 ), así que intentémoslo en ese.
Primero, verifiquemos que realmente contenga datos:
sqlite> SELECT * FROM Albums1; AlbumId AlbumName Year ArtistId -------- -------------------- ------------ ------------ 1 Killers 1981 7 2 Powerslave 1984 7 3 Surfing with the Ali 1987 1 4 Heavy as a Really He 1995 11 5 Yummy Yummy 1994 17 6 Out of the Loop 2007 6 7 Suck on This 1989 13 8 Pork Soda 1993 13 9 Sailing the Seas of 1991 13 10 Flying in a Blue Dre 1989 1 11 Black Swans and Worm 2010 1 12 Somewhere in Time 1986 7 13 Big Red Car 1995 17
Lo hace. Así que sigamos adelante y eliminémoslo todo:
DELETE FROM Albums1;
Ahora revisemos su contenido nuevamente:
sqlite> SELECT * FROM Albums1; sqlite>
(Sin resultados).