SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLite - Usuń dane

DELETE oświadczenie może być użyte do usunięcia danych z tabeli.

WHERE Klauzula może być użyta w celu dokładnego określenia, które wiersze powinny zostać usunięte.

Możesz usunąć wszystkie wiersze, niektóre wiersze lub żaden, w zależności od warunków filtrowania zastosowanych przez WHERE klauzula.

Proste usuwanie

Najpierw znajdźmy wykonawcę do usunięcia:

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                                                   

OK, usuńmy wykonawcę numer 12 (Pogromca).

Oto prosta instrukcja usuwania, która usuwa ten rekord z Wykonawców tabela:

DELETE FROM Artists
WHERE ArtistId = 12;

Tak więc po uruchomieniu tego możemy sprawdzić, czy rekord został faktycznie usunięty za pomocą SELECT oświadczenie:

sqlite> SELECT * FROM Artists WHERE ArtistId = 12;
sqlite>                                                                     

(Brak wyników).

Usuwanie danych z ograniczeniem klucza obcego

Jeśli spróbujesz usunąć rekord, do którego odwołuje się klucz obcy, powinien pojawić się błąd. Musisz najpierw usunąć rekordy klucza obcego, zanim usuniesz rekord klucza podstawowego.

Na przykład identyfikator wykonawcy 17 (od Artystów tabeli) odwołuje się do dwóch rekordów w Albumach tabela (zobacz ArtistId kolumna):

sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
AlbumId   AlbumName             ReleaseDate   ArtistId    
--------  --------------------  ------------  ------------
5         Yummy Yummy           1994          17          
13        Big Red Car           1995          17          

Więc jeśli spróbujemy usunąć wykonawcę 17 z tabeli Artyści (która zawiera klucz podstawowy), powinniśmy otrzymać błąd.

Oto instrukcja usunięcia:

DELETE FROM Artists
WHERE ArtistId = 17;

A oto wynik:

sqlite> DELETE FROM Artists
   ...> WHERE ArtistId = 17;
Error: FOREIGN KEY constraint failed
sqlite> 

Dlatego musimy usunąć rekordy klucza obcego, zanim usuniemy klucz podstawowy.

Jeśli nie udało Ci się uzyskać ograniczenia na klucz OBCY komunikat, może być konieczne włączenie sprawdzania ograniczenia klucza obcego. Uruchom PRAGMA foreign_keys = ON; aby włączyć sprawdzanie ograniczeń klucza obcego.

Usuń powiązane rekordy

Usuńmy więc powiązane rekordy w Albumach tabeli, przed ponownym wypróbowaniem powyższej instrukcji usuwania.

DELETE FROM Albums
WHERE ArtistId = 17;

Sprawdź, czy zostały usunięte:

sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
sqlite> 

(Brak wyników).

Spróbujmy teraz ponownie z oryginalną instrukcją usuwania:

DELETE FROM Artists
WHERE ArtistId = 17;

Wygląda obiecująco — bez błędu:

sqlite> DELETE FROM Artists
   ...> WHERE ArtistId = 17;
sqlite> 	

I SELECT oświadczenie potwierdza usunięcie:

sqlite> SELECT * FROM Artists WHERE ArtistId = 17;
sqlite> 

Brak wyników.

Usuń wszystkie wiersze

Możesz usunąć wszystkie wiersze w tabeli, pomijając WHERE klauzula.

Mamy zapasowy stół ( Albumy1 ), więc spróbujmy na tym.

Najpierw sprawdźmy, czy rzeczywiście zawiera dane:

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          

To robi. Więc śmiało usuńmy to wszystko:

DELETE FROM Albums1;

Sprawdźmy teraz ponownie jego zawartość:

sqlite> SELECT * FROM Albums1;
sqlite> 

(Brak wyników).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa SQLite Ifnull()

  2. Uncaught TypeError nie może wywołać metody „opendatabase” wtyczki undefined-SQLite z cordova 3.5

  3. Jak mogę wstawić obraz do bazy danych sqlite?

  4. Android Room:jak przenieść zmianę nazwy kolumny?

  5. 3 sposoby na znalezienie wierszy zawierających wielkie litery w SQLite