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.

  • ๐Ÿ“ MEMASUKKAN: Pernyataan INSERT menambahkan satu atau lebih baris baru, dengan mencantumkan kolom target dan nilainya dalam klausa VALUES.
  • ๏ธ MEMPERBARUI: Pernyataan UPDATE mengubah nilai kolom yang sudah ada, menggunakan SET untuk data baru dan WHERE untuk menargetkan baris tertentu.
  • ๏ธ MENGHAPUS: Pernyataan DELETE menghapus baris yang sesuai dengan kondisi WHERE, atau setiap baris jika klausa WHERE dihilangkan.
  • โš ๏ธ Klausul Konflik: Klausul ON CONFLICT menyelesaikan pelanggaran batasan melalui ROLLBACK, ABORT, FAIL, IGNORE, atau REPLACE.
  • ๐Ÿ” Transaksi: Transaksi basis data mengelompokkan beberapa operasi menjadi satu unit yang sepenuhnya melakukan komitmen atau pembatalan.
  • ๐Ÿค– Bantuan AI: Alat AI text-to-SQL dan GitHub Copilot menghasilkan SQLite Pernyataan INSERT, UPDATE, dan DELETE dari perintah dalam bahasa Inggris sederhana.

SQLite MASUKKAN, PERBARUI, HAPUS Kueri

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โ€œ:

SQLite Kueri - MASUKKAN, PERBARUI, HAPUS

Langkah 2) Buka basis data โ€œTutorialsSampleDB.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.
  • 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 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, 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:

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. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

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

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

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

Pertanyaan Umum Demo Slot

UPSERT menggabungkan operasi insert dan update. Karena SQLite 3.24.0 (2018), INSERT INTO โ€ฆ ON CONFLICT(column) DO UPDATE SET โ€ฆ menyisipkan baris baru, atau memperbarui baris yang sudah ada ketika terjadi konflik UNIQUE atau PRIMARY KEY. DO NOTHING akan melewati baris tersebut secara diam-diam.

INSERT OR REPLACE menghapus baris yang bertentangan dan memasukkan baris baru, sehingga kolom yang tidak terdaftar diatur ulang ke nilai defaultnya. ON CONFLICT DO UPDATE mengedit baris yang ada di tempatnya, mempertahankanping kolom lainnya tetap utuh, yang menjadikannya upsert yang lebih aman dan akurat.

Cantumkan beberapa kelompok nilai setelah VALUES, dipisahkan oleh koma: INSERT INTO Students (id, name) VALUES (1,'A'), (2,'B'), (3,'C');. Bentuk multi-baris ini berfungsi karena SQLite 3.7.11 dan lebih cepat daripada menjalankan satu pernyataan INSERT per baris.

Jalankan perintah DELETE FROM table_name; tanpa klausa WHERE. SQLite Tidak memiliki perintah TRUNCATE, tetapi menerapkan optimasi pemotongan yang menghapus semua baris sekaligus. Struktur tabel tetap sama; gunakan DROP TABLE untuk menghapus tabel sepenuhnya.

Sejak SQLite 3.35.0 (2021), INSERT, UPDATE, dan DELETE menerima klausa RETURNING opsional yang menampilkan baris yang terpengaruh. Misalnya, INSERT โ€ฆ RETURNING id; akan langsung mengembalikan nilai yang dihasilkan, sehingga menghindari SELECT terpisah untuk membaca perubahan yang terjadi.

Gunakan INSERT INTO โ€ฆ SELECT: INSERT INTO Archive (id, name) SELECT id, name FROM Students WHERE DepartmentId = 4;. SQLite Menyisipkan setiap baris yang dikembalikan oleh SELECT, sehingga urutan dan jumlah kolom harus sesuai dengan tabel target.

Ya. Asisten AI teks-ke-SQL mengubah permintaan bahasa Inggris biasa menjadi SQLite Pernyataan INSERT, UPDATE, dan DELETE, termasuk klausa WHERE dan ON CONFLICT. Menyediakan nama tabel dan kolom Anda akan meningkatkan akurasi, dan setiap pernyataan yang dihasilkan harus ditinjau dan diuji sebelum dijalankan pada data nyata.

Kopilot GitHub menyarankan SQLite Kueri INSERT, UPDATE, dan DELETE langsung di editor seperti VS CodeProgram ini membaca skema dan komentar di sekitarnya, sehingga penyelesaian otomatis menggunakan kembali nama tabel dan kolom Anda yang sebenarnya, tetapi Anda tetap harus memverifikasi setiap pernyataan sebelum mengeksekusinya.

Ringkaslah postingan ini dengan: