SQLite INSERT, UPDATE, DELETE Kueri dengan Contoh

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,

  1. Buka Komputer Saya dan navigasikan ke direktori berikut “Bahasa Indonesia: C:\sqlite"Dan
  2. Lalu buka “sqlite3.exe"

SQLite Kueri - MASUKKAN, PERBARUI, HAPUS

Langkah 2) Buka basis data “TutorialSampleDB.db” dengan perintah berikut:

.open TutorialsSampleDB.db

SQLite Kueri - MASUKKAN, PERBARUI, HAPUS

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:

SQLite MEMASUKKAN

  • 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:

SQLite Menyisipkan

Ini akan memasukkan dua siswa:

  • Siswa pertama dengan StudentId=11, StudentName = Ahmad, DepartmentId = 4, dan DateOfBirth = 1997-10-12.
  • Siswa kedua dengan StudentId=12, StudentName = Aly, DepartmentId = 4, dan DateOfBirth = 1996-10-12′.

Pada pernyataan pertama, kami mencantumkan nama kolom “StudentId, StudentName, DepartmentId, Tanggal Lahir“.Namun, pada pernyataan kedua, kami tidak melakukannya.

Empat nilai “12, 'Aly', 4, '1996-10-12'” akan disisipkan di keempat kolom tabel Siswa dengan urutan yang sama dengan kolom yang ditentukan.

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 Menyisipkan

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:

SQLite Memperbarui

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:

SQLite Memperbarui

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 Memperbarui

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:

SQLite Delete

  • Anda harus menulis nama tabel setelah klausa DELETE FROM, yang catatannya ingin Anda hapus. (Catatan: bahwa klausa HAPUS digunakan untuk menghapus beberapa record dari tabel atau menghapus semua record dan tidak akan menghapus tabel itu sendiri. Namun, itu klausa DROP digunakan untuk menghapus seluruh tabel dengan semua catatan 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 ATAU StudentId = 12” hanya berlaku untuk siswa dengan ID 11 dan 12. Jadi klausa DELETE akan diterapkan pada keduanya dan hanya akan menghapusnya.

Perintah ini seharusnya berjalan dengan sukses dan Anda tidak akan mendapatkan output seperti berikut:

SQLite Delete

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 Delete

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:

  1. KEMBALI – ini akan mengembalikan transaksi yang 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.
  2. MENGGUGURKAN – ini akan membatalkan (membatalkan) arus 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.
  3. GAGAL - membatalkan arus 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.
  1. LAGI – ini akan melewati baris yang berisi pelanggaran kendala dan melanjutkan pemrosesan baris berikutnya dari 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.
  1. REPLACE – bergantung 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: 5 resolusi di atas adalah pilihan bagaimana Anda ingin menyelesaikan konflik. Belum tentu apa yang dapat diterapkan untuk menyelesaikan satu konflik dapat diterapkan untuk menyelesaikan 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:

SQLite Klausul Konflik

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 kunci utama tidak mengizinkan dua nilai duplikat dimasukkan ke dalam kolom SubjectId sehingga semua nilai di kolom tersebut harus unik. Juga, perhatikan bahwa kita memilih resolusi konflik menjadi “LAGI".

Perintah harus berjalan dengan sukses dan Anda tidak akan mendapatkan kesalahan apa pun:

TENTANG KONFLIK ABAIKAN Contoh

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:

TENTANG KONFLIK ABAIKAN Contoh

Langkah 3) Pilih semua mata pelajaran dari tabel sebagai berikut:

SELECT * FROM Subjects;

Ini akan memberi Anda daftar mata pelajaran:

TENTANG KONFLIK ABAIKAN Contoh

Perhatikan bahwa hanya tiga subjek yang dimasukkan “Aljabar, Mata Kuliah Database, 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.

Juga, perhatikan bahwa kita memilih opsi penyelesaian konflik menjadi “REPLACE“. Perintah harus berjalan dengan sukses dan Anda tidak akan mendapatkan kesalahan apa pun:

Contoh PENGGANTI KONFLIK

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:

Contoh PENGGANTI KONFLIK

Langkah 3) Pilih semua mata pelajaran dari tabel sebagai berikut:

SELECT * FROM Subjects;

Ini akan memberi Anda daftar mata pelajaran:

Contoh PENGGANTI KONFLIK

Perhatikan bahwa hanya tiga subjek yang dimasukkan “Aljabar, Struktur Data, dan Algorithms” padahal kami mencoba menyisipkan 4 baris.

Baris yang mempunyai nilai yang melanggar batasan kunci utama, yaitu “Struktur Data” menggantikan nilai “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 mencoba menjalankan pernyataan penyisipan ketiga dengan SubjectId 2 dan SubjectName “Struktur Data“, ternyata sudah ada subjek dengan SubjectId = 2. Yang merupakan pelanggaran terhadap batasan kunci utama yang ditentukan pada kolom SubjectId.
  • SQLite akan memilih resolusi REPLACE untuk konflik ini. Ini menggantikan nilai yang sudah ada di tabel subyek dengan nilai baru dari pernyataan sisipkan. Sehingga "Kursus Basis Data” Nama Subjek akan diganti dengan “Struktur Data” Nama Subjek.

Ringkasan

Klausa INSERT, UPDATE, dan DELETE digunakan untuk mengubah data di dalam SQLite Database. Klausa CONFLICT adalah klausa yang kuat untuk menyelesaikan konflik apa pun antara data dan data yang akan dimodifikasi.