SQLite INSERT, UPDATE, DELETE Kueri dengan Contoh
โก Ringkasan Cerdas
SQLite Pernyataan INSERT, UPDATE, dan DELETE memodifikasi data dalam basis data dengan menambahkan baris baru, mengubah nilai yang ada, dan menghapus catatan, sementara klausa ON CONFLICT menentukan bagaimana pelanggaran batasan diselesaikan selama operasi tersebut.

Kueri Sisipkan, Perbarui & Hapus di SQLite
Klausul modifikasi data di SQLite adalah pernyataan INSERT, UPDATE, dan DELETE. Ini digunakan untuk menyisipkan baris baru, memperbarui nilai yang ada, atau menghapus baris dari database.
Perhatikan bahwa, untuk semua contoh berikut, Anda harus menjalankan sqlite3.exe dan membuka koneksi ke database contoh seperti yang mengalir:
Langkah 1) Pada langkah ini,
- Buka Komputer Saya dan arahkan ke direktori berikut โC:\sqliteโ dan
- Kemudian buka โsqlite3.exeโ:
Langkah 2) Buka basis data โTutorialsSampleDB.dbโ dengan perintah berikut:
.open TutorialsSampleDB.db
Sekarang Anda siap menjalankan semua jenis kueri pada database.
SQLite MEMASUKKAN
SQLite INSERT digunakan untuk memasukkan catatan ke dalam tabel database tertentu. Anda harus menggunakan klausa 'INSERT'. Sintaks klausa INSERT adalah sebagai berikut:
- Setelah klausa INSERT, Anda harus menyatakan tabel mana yang perlu Anda masukkan nilainya.
- Setelah nama tabel Anda menulis daftar kolom, Anda ingin memasukkan nilainya.
- Anda dapat mengabaikan nama kolom dan tidak menulisnya.
- Jika Anda tidak menulis nama kolom, nilainya akan dimasukkan ke semua kolom yang ada di tabel dengan urutan yang sama, kolom-kolom tersebut ditentukan dalam tabel.
- Setelah klausa VALUES, Anda harus mencantumkan nilai yang akan dimasukkan.
- Setiap klausa INSERT hanya menyisipkan satu baris. Jika Anda ingin menyisipkan beberapa baris, Anda harus menulis beberapa klausa INSERT, satu untuk setiap baris.
SQLite Masukkan Contoh
Dalam contoh berikut, kita akan memasukkan 2 baris ke dalam tabel siswa, satu untuk setiap siswa:
INSERT INTO Students(StudentId, StudentName, DepartmentId, DateOfBirth) VALUES(11, 'Ahmad', 4, '1997-10-12'); INSERT INTO Students VALUES(12, 'Aly', 4, '1996-10-12');
Ini seharusnya berjalan dengan sukses dan tidak ada keluaran untuk ini:
Ini akan memasukkan dua siswa:
- Siswa pertama dengan StudentId=11, StudentName = Ahmad, DepartmentId = 4, dan DateOfBirth = 1997-10-12.
- Mahasiswa kedua dengan StudentId=12, StudentName = Aly, DepartmentId = 4, dan DateOfBirth = 1996-10-12'.
Pada pernyataan pertama, kami mencantumkan nama-nama kolom "StudentId, StudentName, DepartmentId, DateOfBirth". Namun, pada pernyataan kedua, kami tidak mencantumkannya.
Keempat nilai โ12, 'Aly', 4, '1996-10-12'โ akan dimasukkan ke dalam keempat kolom tabel Siswa dengan urutan yang sama seperti saat kolom tersebut didefinisikan.
Sekarang, mari kita verifikasi bahwa kedua siswa telah dimasukkan ke dalam tabel Siswa dengan menjalankan perintah berikut pertanyaan:
SELECT * FROM Students;
Kemudian Anda akan melihat dua siswa yang dikembalikan dari kueri tersebut sebagai berikut:
SQLite Memperbarui
SQLite Kueri UPDATE digunakan untuk mengubah data yang ada dalam tabel. Anda dapat menggunakan klausa WHERE dengan kueri UPDATE untuk memperbarui baris yang dipilih. Klausa UPDATE memperbarui tabel dengan mengubah nilai untuk kolom tertentu. Berikut ini adalah sintaksis klausa UPDATE:
Sebagai berikut:
- Setelah โklausul pembaruanโ, Anda harus menulis nama tabel yang akan diperbarui.
- Anda harus menulis โklausa SETโ yang digunakan untuk menulis nama kolom yang akan diperbarui dan nilai yang akan diperbarui.
- Anda dapat memperbarui lebih dari satu kolom. Anda dapat menggunakan koma di antara setiap baris.
- Anda dapat menentukan klausa WHERE untuk menentukan beberapa baris saja. Hanya baris yang dinilai benar oleh ekspresi yang diperbarui. Jika Anda tidak menentukan klausa WHERE, semua baris akan diperbarui.
SQLite Perbarui Contoh
Dalam pernyataan UPDATE berikut, kami akan memperbarui DepartmentId untuk Siswa dengan StudentId = 6 menjadi 3:
UPDATE Students SET DepartmentId = 3 WHERE StudentId = 6;
Ini akan berjalan dengan sukses dan Anda tidak akan mendapatkan hasil apa pun:
Dalam klausa UPDATE, kami menetapkan bahwa kami ingin memperbarui tabel Siswa.
- Dalam klausa WHERE, kami memfilter semua siswa untuk memilih hanya baris untuk StudentId = 6.
- Klausa SET akan memperbarui nilai Id Jurusan mahasiswa terpilih menjadi 3.
Sekarang, mari kita verifikasi bahwa siswa dengan ID 6 telah diperbarui, dengan menjalankan perintah berikut:
SELECT * FROM Students WHERE StudentId = 6;
Anda sekarang akan melihat bahwa nilai ID Departemen sekarang adalah 3 seperti berikut:
SQLite Delete
SQLite Permintaan DELETE digunakan untuk menghapus catatan yang ada dari tabel tertentu. Anda dapat menggunakan klausa WHERE dengan kueri DELETE untuk menghapus baris yang dipilih.
Klausa DELETE memiliki sintaksis sebagai berikut:
- Anda harus menulis nama tabel setelah klausa DELETE FROM, dari mana Anda ingin menghapus data. (Catatan: klausa DELETE digunakan untuk menghapus beberapa data dari sebuah tabel atau menghapus semua data dan tidak akan menghapus tabel itu sendiri. Namun, klausa DROP digunakan untuk menghapus seluruh tabel beserta semua data di dalamnya.)
- Jika Anda menulis klausa DELETE seperti ini โDELETE FROM guruโ, ini akan menghapus semua record dari tabel โguruโ.
- Anda dapat menentukan kondisi WHERE dengan ekspresi jika Anda ingin menghapus beberapa baris tertentu. Hanya baris yang ekspresinya bernilai benar yang akan dihapus. Misalnya, โDELETE FROM guru WHERE id > 5โ โ ini hanya akan menghapus record yang memiliki id lebih besar dari 5.
Example
Dalam pernyataan berikut, kami akan menghapus dua siswa dengan StudentId 11 dan 12:
DELETE FROM Students WHERE StudentId = 11 OR StudentId = 12;
Ekspresi โStudentId = 11 OR StudentId = 12โ hanya akan bernilai benar untuk siswa dengan ID 11 dan 12. Jadi, klausa DELETE akan diterapkan pada keduanya dan hanya akan menghapus keduanya.
Perintah ini seharusnya berjalan dengan sukses dan Anda tidak akan mendapatkan output seperti berikut:
Anda dapat memverifikasi bahwa kedua siswa tersebut telah dihapus, dengan memilih semua rekaman dari tabel Siswa seperti berikut:
SELECT * FROM Students;
Anda seharusnya tidak melihat dua siswa dengan id 11 dan 12 sebagai berikut:
SQLite Klausul Konflik
Misalkan Anda memiliki kolom yang memiliki salah satu batasan kolom berikut: UNIQUE, NOT NULL, CHECK, atau PRIMARY KEY. Lalu Anda mencoba memasukkan atau memperbarui nilai pada kolom tersebut dengan nilai yang bertentangan dengan batasan ini.
Misalnya, jika kolom memiliki batasan UNIK dan Anda mencoba memasukkan nilai yang sudah ada (nilai duplikat), yang bertentangan dengan batasan UNIK. Kemudian klausa KONFLIK membiarkan Anda memilih apa yang harus dilakukan dalam kasus tersebut untuk menyelesaikan konflik ini.
Sebelum kita melanjutkan menjelaskan bagaimana klausa KONFLIK menyelesaikan konflik. Anda harus memahami apa itu transaksi database.
Transaksi Database
Istilah transaksi database adalah daftar SQLite operasi (menyisipkan atau memperbarui atau menghapus). Transaksi basis data harus dijalankan sebagai satu kesatuan, baik semua operasi berhasil dijalankan atau tidak sama sekali. Semua operasi akan dibatalkan jika salah satu gagal dijalankan.
Contoh transaksi database
Transaksi transfer uang dari satu rekening bank ke rekening bank lainnya melibatkan beberapa aktivitas. Operasi transaksi ini meliputi penarikan uang dari rekening pertama, dan menyetorkannya ke rekening lain. Transaksi ini harus diselesaikan sepenuhnya atau dibatalkan sepenuhnya dan tidak gagal di tengah jalan.
Berikut daftar lima resolusi yang dapat Anda pilih dalam klausa KONFLIK:
- ROLLBACK โ ini akan membatalkan transaksi di mana transaksi saat ini SQLite pernyataan yang memiliki konflik (akan membatalkan seluruh transaksi). Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka tidak ada baris yang akan diperbarui, 10 baris tersebut akan tetap sama. Kesalahan akan terjadi.
- BATALKAN โ ini akan membatalkan (menghentikan) proses yang sedang berlangsung SQLite hanya pernyataan yang bertentangan dan transaksi tidak akan dibatalkan. Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka hanya nilai kelima yang tidak akan diperbarui namun 9 baris lainnya akan diperbarui. Kesalahan akan terjadi.
- GAGAL โ menghentikan proses saat ini SQLite pernyataan yang mengandung konflik. Namun, transaksi tidak akan dilanjutkan tetapi perubahan sebelumnya yang dilakukan pada baris sebelum baris yang memiliki konflik akan diterapkan. Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka hanya 4 baris yang akan diperbarui dan baris lainnya tidak. Kesalahan akan terjadi.
- ABAIKAN โ ini akan melewati baris yang berisi pelanggaran batasan dan melanjutkan pemrosesan baris-baris berikutnya. SQLite penyataan. Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka hanya 4 baris yang akan diperbarui dan baris lainnya tidak. Itu tidak akan melanjutkan lebih jauh untuk memperbarui baris lain dan berhenti pada baris yang memiliki nilai konflik. Tidak ada kesalahan yang akan terjadi.
- GANTI โ tergantung pada jenis batasan yang dilanggar:
- Ketika ada pelanggaran batasan untuk batasan UNIQUE atau PRIMARY KEY. REPLACE akan mengganti baris yang menyebabkan pelanggaran dengan baris baru yang disisipkan atau diperbarui.
- Ketika terjadi pelanggaran batasan NOT NULL, klausa REPLACE akan mengganti nilai NULL dengan nilai default kolom tersebut. Jika kolom tidak memiliki nilai default, maka SQLite akan membatalkan pernyataan (pernyataan akan dibatalkan)
- JIKA terjadi pelanggaran batasan CHECK, klausa tersebut akan dibatalkan.
Catatan: Kelima solusi di atas adalah pilihan tentang bagaimana Anda ingin menyelesaikan konflik. Solusi yang berlaku untuk satu jenis konflik belum tentu berlaku untuk jenis konflik lainnya.
Cara mendeklarasikan klausa CONFLICT
Anda dapat mendeklarasikan klausa ON CONFLICT saat Anda menentukan batasan untuk definisi kolom dalam klausa CREATE TABLE. Menggunakan sintaks berikut:
Anda dapat memilih salah satu dari lima resolusi untuk menyelesaikan konflik seperti yang telah dijelaskan sebelumnya.
TENTANG KONFLIK ABAIKAN Contoh
Langkah 1) Buat subjek tabel baru sebagai berikut:
CREATE TABLE [Subjects] ( [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT IGNORE, [SubjectName] NVARCHAR NOT NULL );
Perhatikan bahwa kita telah mendefinisikan batasan PRIMARY KEY pada kolom SubjectId. Batasan primary key tidak akan mengizinkan dua nilai duplikat dimasukkan ke dalam kolom SubjectId sehingga semua nilai dalam kolom tersebut harus unik. Selain itu, perhatikan bahwa kita memilih resolusi konflik sebagai โIGNOREโ.
Perintah harus berjalan dengan sukses dan Anda tidak akan mendapatkan kesalahan apa pun:
Langkah 2) Sekarang, mari masukkan beberapa nilai ke dalam subjek tabel baru, namun dengan nilai yang melanggar batasan kunci utama:
INSERT INTO Subjects VALUES(1, 'Algebra'); INSERT INTO Subjects VALUES(2, 'Database Course'); INSERT INTO Subjects VALUES(2, 'Data Structures'); INSERT INTO Subjects VALUES(4, 'Algorithms');
Dalam pernyataan INSERT ini, kami mencoba memasukkan dua kursus dengan ID Subjek Kunci Utama 2 yang sama, yang merupakan pelanggaran terhadap batasan kunci utama.
Perintah-perintah tersebut seharusnya berjalan dengan baik dan Anda seharusnya tidak mengalami kesalahan apa pun. Berikut ini adalah perintah-perintahnya:
Langkah 3) Pilih semua mata pelajaran dari tabel sebagai berikut:
SELECT * FROM Subjects;
Ini akan memberi Anda daftar mata pelajaran:
Perhatikan bahwa hanya tiga mata pelajaran yang dimasukkan yaitu โAljabar, Kursus Basis Data, dan Algorithmsโ bukannya 4 baris.
Baris yang memiliki nilai yang melanggar batasan kunci utama, yaitu โStruktur Dataโ diabaikan dan tidak disisipkan. Namun, SQLite terus mengeksekusi pernyataan lain setelah baris itu.
Langkah 4) HAPUS tabel subjek untuk membuatnya lagi dengan klausa ON CONFLICT yang berbeda untuk contoh berikut dengan menjalankan perintah berikut:
DROP TABLE Subjects;
Perintah drop menghapus seluruh tabel. Tabel Subjek sekarang tidak ada.
Contoh PENGGANTI KONFLIK
Langkah 1) Buat subjek tabel baru sebagai berikut:
CREATE TABLE [Subjects] ( [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT REPLACE, [SubjectName] NVARCHAR NOT NULL );
Perhatikan bahwa kita mendefinisikan batasan PRIMARY KEY pada kolom SubjectId. Batasan kunci utama tidak mengizinkan dua nilai duplikat dimasukkan ke dalam kolom SubjectId sehingga semua nilai di kolom tersebut harus unik.
Perhatikan juga bahwa kita memilih opsi penyelesaian konflik sebagai "GANTI". Perintah tersebut seharusnya berjalan dengan sukses dan Anda seharusnya tidak mendapatkan kesalahan apa pun:
Langkah 2) Sekarang, mari masukkan beberapa nilai ke dalam tabel baru Subyek, namun dengan nilai yang melanggar batasan kunci utama:
INSERT INTO Subjects VALUES(1, 'Algebra'); INSERT INTO Subjects VALUES(2, 'Database Course'); INSERT INTO Subjects VALUES(2, 'Data Structures'); INSERT INTO Subjects VALUES(4, 'Algorithms');
Dalam pernyataan INSERT ini, kami mencoba memasukkan dua kursus dengan ID Subjek Kunci Utama 2 yang sama, yang merupakan pelanggaran terhadap batasan kunci utama.
Perintah-perintah tersebut seharusnya berjalan dengan baik dan Anda seharusnya tidak mengalami kesalahan apa pun. Berikut ini adalah perintah-perintahnya:
Langkah 3) Pilih semua mata pelajaran dari tabel sebagai berikut:
SELECT * FROM Subjects;
Ini akan memberi Anda daftar mata pelajaran:
Perhatikan bahwa hanya tiga mata pelajaran yang dimasukkan yaitu โAljabar, Struktur Data, dan Algorithmsโ padahal kami mencoba menyisipkan 4 baris.
Baris yang memiliki nilai yang melanggar batasan kunci utama, yaitu โStruktur Dataโ, diganti nilainya dengan โKursus Basis Dataโ sebagai berikut:
- Dua pernyataan penyisipan pertama berjalan dengan baik tanpa masalah. Dua mata pelajaran Aljabar, dan Mata Kuliah Database akan disisipkan dengan id 1, 2.
- Ketika SQLite Saat mencoba menjalankan pernyataan insert ketiga dengan SubjectId 2 dan SubjectName โData Structuresโ, sistem menemukan bahwa sudah ada subject dengan SubjectId = 2. Ini merupakan pelanggaran terhadap batasan primary key yang didefinisikan pada kolom SubjectId.
- SQLite Sistem akan memilih resolusi REPLACE untuk konflik ini. Resolusi ini mengganti nilai yang sudah ada di tabel subjects dengan nilai baru dari pernyataan insert. Jadi, SubjectName "Database Course" akan diganti dengan SubjectName "Data Structures".


















