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).