SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite - Hapus Data

DELETE pernyataan dapat digunakan untuk menghapus data dalam tabel.

WHERE klausa dapat digunakan untuk menentukan dengan tepat baris mana yang harus dihapus.

Anda dapat menghapus semua baris, beberapa baris, atau tidak sama sekali, bergantung pada kondisi pemfilteran yang diterapkan oleh WHERE klausa.

Hapus Sederhana

Pertama, mari cari artis untuk dihapus:

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                                                   

Oke, mari kita hapus nomor artis 12 (Pembunuh).

Berikut pernyataan penghapusan sederhana yang menghapus rekaman tersebut dari Artis tabel:

DELETE FROM Artists
WHERE ArtistId = 12;

Jadi, setelah menjalankan itu, kami dapat memverifikasi bahwa catatan itu sebenarnya dihapus dengan SELECT pernyataan:

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

(Tidak ada hasil).

Menghapus Data dengan Batasan Kunci Asing

Jika Anda mencoba untuk menghapus catatan yang direferensikan oleh kunci asing, Anda akan mendapatkan kesalahan. Anda harus menghapus catatan kunci asing terlebih dahulu, sebelum menghapus catatan kunci utama.

Misalnya, ID artis 17 (dari Artis table) kebetulan direferensikan oleh dua catatan di Album tabel (lihat ArtistId kolom):

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

Jadi jika kami mencoba menghapus artis 17 dari tabel Artis (yang berisi kunci utama), kita akan mendapatkan kesalahan.

Berikut pernyataan hapus:

DELETE FROM Artists
WHERE ArtistId = 17;

Dan inilah hasilnya:

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

Jadi, kita perlu menghapus catatan kunci asing sebelum kita menghapus kunci utama.

Jika Anda tidak mendapatkan kendala KUNCI ASING gagal pesan, Anda mungkin perlu mengaktifkan pemeriksaan batasan kunci asing. Jalankan PRAGMA foreign_keys = ON; untuk mengaktifkan pemeriksaan batasan kunci asing.

Hapus Catatan Terkait

Jadi mari kita hapus catatan terkait di Album tabel, sebelum mencoba lagi pernyataan hapus di atas.

DELETE FROM Albums
WHERE ArtistId = 17;

Periksa apakah mereka telah dihapus:

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

(Tidak ada hasil).

Sekarang mari kita coba lagi pernyataan hapus yang asli:

DELETE FROM Artists
WHERE ArtistId = 17;

Terlihat menjanjikan — tidak ada kesalahan:

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

Dan SELECT pernyataan mengonfirmasi penghapusan:

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

Tidak ada hasil.

Hapus semua Baris

Anda dapat menghapus semua baris dalam tabel dengan menghilangkan WHERE klausa.

Kami memiliki meja cadangan ( Album1 ), jadi mari kita coba yang itu.

Pertama, mari kita periksa apakah itu benar-benar berisi data:

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          

Itu tidak. Jadi mari kita lanjutkan dan hapus semuanya:

DELETE FROM Albums1;

Sekarang mari kita periksa lagi isinya:

sqlite> SELECT * FROM Albums1;
sqlite> 

(Tidak ada hasil).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengatur ulang basis data SqLite di Android?

  2. 2 Cara Menghapus Baris Duplikat di SQLite

  3. Menggunakan SQLCipher dengan Android

  4. SQLite JSON()

  5. Mengapa durasi NULL untuk acara berulang di android?