SQLite INSERT, UPDATE, DELETE Query dengan Contoh

Daftar Isi:

Anonim

Klausul modifikasi data di SQLite adalah pernyataan INSERT, UPDATE, dan DELETE. Ini digunakan untuk memasukkan baris baru, memperbarui nilai yang sudah ada, atau menghapus baris dari database.

Dalam tutorial ini, Anda akan belajar-

  • MEMASUKKAN
  • Memperbarui
  • Menghapus
  • Klausul Konflik

Perhatikan bahwa, untuk semua contoh berikut, Anda harus menjalankan sqlite3.exe dan membuka koneksi ke database sampel sebagai mengalir:

Langkah 1) Pada langkah ini,

  1. Buka My Computer dan arahkan ke direktori berikut " C: \ sqlite " dan
  2. Kemudian buka " sqlite3.exe ":

Langkah 2) Buka database " TutorialsSampleDB.db " dengan perintah berikut:

.open TutorialsSampleDB.db

Sekarang Anda siap menjalankan semua jenis kueri di database.

SISIPKAN SQLite

SQLite INSERT digunakan untuk memasukkan record ke dalam tabel database tertentu. Anda harus menggunakan klausa 'INSERT'. Sintaks klausa INSERT adalah sebagai berikut:

  • Setelah klausa INSERT, Anda harus menyatakan pada tabel mana Anda perlu memasukkan nilai.
  • Setelah nama tabel Anda menulis daftar kolom, Anda ingin memasukkan nilai ke dalamnya.
  • Anda dapat mengabaikan nama kolom dan tidak menulis padanya.
  • Jika Anda tidak menulis nama kolom, nilainya akan disisipkan ke semua kolom yang ditemukan dalam tabel dengan urutan yang sama, kolom ditentukan dalam tabel.
  • Setelah klausa VALUES, Anda harus membuat daftar nilai yang akan disisipkan.
  • Setiap klausa INSERT hanya menyisipkan satu baris. Jika Anda ingin menyisipkan beberapa baris, Anda harus menulis beberapa klausa INSERT, satu untuk setiap baris.

Contoh Penyisipan SQLite

Dalam contoh berikut, kami akan memasukkan 2 baris ke dalam tabel siswa, satu baris untuk setiap siswa:

MASUKKAN KE Siswa (StudentId, StudentName, DepartmentId, DateOfBirth)NILAI (11, 'Ahmad', 4, '1997-10-12');MASUKKAN KE NILAI Siswa (12, 'Aly', 4, '1996-10-12');

Ini harus berjalan dengan sukses dan tidak ada keluaran untuk ini:

Ini akan memasukkan dua siswa:

  • Mahasiswa 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 '.

Di pernyataan pertama, kami mencantumkan nama kolom " StudentId, StudentName, DepartmentId, DateOfBirth ". Namun, di pernyataan kedua, kami tidak melakukannya.

Keempat nilai " 12, 'Aly', 4, '1996-10-12' " akan dimasukkan ke dalam keempat kolom tabel Siswa dalam urutan yang sama dengan kolom yang ditentukan.

Sekarang, mari verifikasi bahwa kedua siswa disisipkan ke dalam tabel Siswa dengan menjalankan kueri berikut:

PILIH * DARI Siswa;

Kemudian Anda akan melihat dua siswa yang kembali dari kueri itu sebagai berikut:

Pembaruan SQLite

SQLite UPDATE Query digunakan untuk mengubah catatan 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 sintaks klausa UPDATE:

Sebagai berikut:

  • Setelah "klausa pembaruan", Anda harus menulis nama tabel yang akan diperbarui.
  • Anda harus menuliskan "SET clause" yang digunakan untuk menuliskan nama kolom yang akan diupdate dan nilai yang akan diupdate.
  • 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 dievaluasi oleh ekspresi sebagai true yang diperbarui. Jika Anda tidak menentukan klausa WHERE, semua baris akan diperbarui.

Contoh Pembaruan SQLite

Dalam pernyataan UPDATE berikut, kami akan memperbarui DepartmentId untuk Student dengan StudentId = 6 menjadi 3:

PERBARUI SiswaSET DepartmentId = 3DI MANA StudentId = 6;

Ini harus berjalan dengan sukses dan Anda tidak akan mendapatkan output apa pun:

Dalam klausa UPDATE, kami menetapkan bahwa kami ingin memperbarui tabel Siswa.

  • Di klausa WHERE, kami memfilter semua siswa untuk memilih hanya baris untuk StudentId = 6.
  • Klausa SET akan memperbarui nilai Id Departemen untuk siswa yang dipilih menjadi 3.

Sekarang, mari kita verifikasi bahwa siswa dengan ID 6 diperbarui, dengan menjalankan perintah berikut:

PILIH * DARI Siswa DI MANA StudentId = 6;

Anda sekarang harus melihat bahwa nilai Id Departemen sekarang 3 sebagai berikut:

Hapus SQLite

Kueri SQLite DELETE digunakan untuk menghapus rekaman yang ada dari tabel tertentu. Anda dapat menggunakan klausa WHERE dengan kueri DELETE untuk menghapus baris yang dipilih.

Klausa DELETE memiliki sintaks berikut:

  • Anda harus menulis nama tabel setelah klausa DELETE FROM, yang ingin Anda hapus rekamannya. ( Catatan: bahwa klausa DELETE digunakan untuk menghapus beberapa catatan dari tabel atau menghapus semua catatan dan tidak akan menghapus tabel itu sendiri. Namun, 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 di mana ekspresi bernilai true yang akan dihapus. Misalnya, "DELETE FROM guru WHERE id> 5" - ini hanya akan menghapus record yang memiliki id lebih besar dari 5.

Contoh

Dalam pernyataan berikut, kami akan menghapus dua siswa dengan StudentId 11 dan 12:

HAPUS DARI Siswa DI MANA StudentId = 11 ATAU StudentId = 12;

Ekspresi " StudentId = 11 OR StudentId = 12 " akan benar hanya untuk siswa dengan Id 11 dan 12. Jadi klausa DELETE akan diterapkan pada keduanya dan hanya akan menghapusnya.

Perintah ini harus berjalan dengan sukses dan Anda tidak akan mendapatkan output apa pun sebagai berikut:

Anda dapat memverifikasi bahwa kedua siswa telah dihapus, dengan memilih semua catatan dari tabel Siswa sebagai berikut:

PILIH * DARI Siswa;

Anda seharusnya tidak melihat dua siswa dengan id 11 dan 12 sebagai berikut:

Klausul Konflik SQLite

Misalkan Anda memiliki kolom yang memiliki salah satu kendala kolom berikut: UNIQUE, NOT NULL, CHECK, atau PRIMARY KEY. Dan kemudian Anda mencoba memasukkan atau memperbarui nilai pada kolom itu 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 memungkinkan Anda memilih apa yang harus dilakukan dalam kasus seperti itu untuk menyelesaikan konflik ini.

Sebelum kami melanjutkan menjelaskan bagaimana klausa CONFLICT menyelesaikan konflik. Anda harus memahami apa itu transaksi basis data.

Transaksi Database:

Istilah transaksi database adalah daftar operasi SQLite (menyisipkan atau memperbarui atau menghapus). Transaksi database harus dijalankan sebagai satu kesatuan, baik semua operasi berhasil dijalankan atau tidak sama sekali. Semua operasi akan dibatalkan jika salah satunya gagal dijalankan.

Contoh transaksi database:

Transaksi pemindahan uang dari satu rekening bank ke rekening bank lainnya akan melibatkan beberapa aktivitas. Operasi transaksi ini mencakup penarikan uang dari akun pertama, dan menyimpannya ke akun lain. Transaksi ini harus sepenuhnya diselesaikan atau dibatalkan sepenuhnya dan tidak gagal di tengah jalan.

Berikut adalah daftar lima resolusi yang dapat Anda pilih di klausa KONFLIK:

  1. ROLLBACK - ini akan mengembalikan transaksi di mana pernyataan SQLite saat ini yang memiliki konflik (itu 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 terlempar.
  2. ABORT - ini akan membatalkan (membatalkan) hanya pernyataan SQLite saat ini yang memiliki konflik 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 tetapi 9 baris lainnya akan diperbarui. Kesalahan akan terlempar.
  3. FAIL - membatalkan pernyataan SQLite saat ini yang memiliki konflik. Namun, transaksi tidak akan dilanjutkan tetapi perubahan sebelumnya yang dilakukan pada baris sebelum baris yang memiliki konflik akan dilakukan. Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka hanya 4 baris yang akan diperbarui dan yang lainnya tidak. Kesalahan akan terlempar.
  1. ABAIKAN - ini akan melewati baris yang berisi pelanggaran batasan dan terus memproses baris berikut dari pernyataan SQLite. Misalnya, jika Anda mencoba memperbarui 10 baris, dan baris kelima memiliki nilai yang bertentangan dengan batasan, maka hanya 4 baris yang akan diperbarui dan yang lainnya tidak. Ini tidak akan melanjutkan lebih jauh untuk memperbarui baris lain dan berhenti di baris yang memiliki nilai konflik. Tidak ada kesalahan yang akan terjadi.
  1. REPLACE - tergantung pada jenis kendala yang memiliki pelanggaran:
  • 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 ada pelanggaran batasan NOT NULL, klausa REPLACE akan mengganti nilai NULL dengan nilai default dari kolom tersebut. Jika kolom tidak memiliki nilai default, maka SQLite akan membatalkan pernyataan (pernyataan akan dibatalkan)
  • JIKA terjadi pelanggaran batasan PERIKSA, klausul akan dibatalkan.

Catatan: 5 resolusi di atas adalah pilihan bagaimana Anda ingin menyelesaikan konflik. Mungkin belum tentu apa yang dapat diterapkan untuk menyelesaikan satu konflik dapat diterapkan untuk menyelesaikan jenis konflik lainnya.

Cara mendeklarasikan klausa KONFLIK

Anda dapat mendeklarasikan klausa KONFLIK saat Anda menentukan batasan untuk definisi kolom dalam klausa CREATE TABLE. Menggunakan sintaks berikut:

Anda dapat memilih satu dari lima resolusi untuk menyelesaikan konflik seperti yang dijelaskan sebelumnya.

TENTANG CONFLICT Abaikan Contoh

Langkah 1) Buat subjek tabel baru sebagai berikut:

BUAT TABEL [Subjek] ([SubjectId] INTEGER TIDAK NULL KUNCI UTAMA PADA KONFLIK MENGABAIKAN,[SubjectName] NVARCHAR NOT NULL); 

Perhatikan bahwa kita telah mendefinisikan batasan PRIMARY KEY pada kolom SubjectId. Batasan kunci utama tidak mengizinkan dua nilai duplikat untuk disisipkan ke kolom SubjectId sehingga semua nilai di kolom itu harus unik. Juga, perhatikan bahwa kami memilih resolusi konflik menjadi " ABAIKAN ".

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, tetapi dengan nilai yang melanggar batasan kunci utama:

SISIPKAN KE DALAM NILAI-NILAI Subjek (1, 'Aljabar');SISIPKAN KE NILAI Subjek (2, 'Kursus Database');SISIPKAN KE Subjek NILAI (2, 'Struktur Data');MASUKKAN KE NILAI Subjek (4, 'Algoritma');

Dalam pernyataan INSERT ini, kami mencoba memasukkan dua mata kuliah dengan Primary Key Subject id 2 yang sama, yang merupakan pelanggaran untuk kendala kunci utama.

Perintah harus berjalan dengan baik dan Anda tidak akan mendapatkan kesalahan apa pun. Sebagai berikut:

Langkah 3) Pilih semua subjek dari tabel sebagai berikut:

PILIH * DARI Subjek;

Ini akan memberi Anda daftar subjek:

Perhatikan bahwa hanya tiga mata pelajaran yang dimasukkan " Aljabar, Kursus Database, dan Algoritma ", bukan 4 baris.

Baris yang memiliki nilai yang melanggar batasan kunci utama, yaitu "Struktur Data" telah diabaikan dan tidak disisipkan. Namun, SQLite terus mengeksekusi pernyataan lain setelah baris tersebut.

Langkah 4) HAPUS subjek tabel untuk membuatnya lagi dengan klausa ON CONFLICT yang berbeda untuk contoh berikut dengan menjalankan perintah berikut:

TABEL TABEL Subjek; 

Perintah drop menghapus seluruh tabel. Subjek Tabel sekarang tidak ada.

ON CONFLICT REPLACE Contoh

Langkah 1) Buat subjek tabel baru sebagai berikut:

BUAT TABEL [Subjek] ([SubjectId] INTEGER TIDAK NULL KUNCI UTAMA PADA PENGGANTIAN KONFLIK,[SubjectName] NVARCHAR NOT NULL); 

Perhatikan bahwa kita mendefinisikan batasan KUNCI UTAMA pada kolom SubjectId. Batasan kunci utama tidak mengizinkan dua nilai duplikat untuk disisipkan ke kolom SubjectId sehingga semua nilai di kolom itu harus unik.

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

Langkah 2) Sekarang, mari masukkan beberapa nilai ke dalam tabel baru Subjek, tetapi dengan nilai yang melanggar batasan kunci utama:

SISIPKAN KE DALAM NILAI-NILAI Subjek (1, 'Aljabar');SISIPKAN KE NILAI Subjek (2, 'Kursus Database');SISIPKAN KE Subjek NILAI (2, 'Struktur Data');MASUKKAN KE NILAI Subjek (4, 'Algoritma');

Dalam pernyataan INSERT ini, kami mencoba memasukkan dua mata kuliah dengan Primary Key Subject id 2 yang sama, yang merupakan pelanggaran untuk kendala kunci utama.

Perintah harus berjalan dengan baik dan Anda tidak akan mendapatkan kesalahan apa pun. Sebagai berikut:

Langkah 3) Pilih semua subjek dari tabel sebagai berikut:

PILIH * DARI Subjek;

Ini akan memberi Anda daftar subjek:

Perhatikan bahwa hanya tiga subjek yang disisipkan " Aljabar, Struktur Data, dan Algoritma " sementara kami mencoba menyisipkan 4 baris.

Baris yang memiliki nilai yang melanggar batasan kunci utama, yaitu " Struktur Data " menggantikan nilai " Kursus Database " sebagai berikut:

  • Dua pernyataan insert pertama berfungsi 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 " Data Structures ", ia menemukan bahwa sudah ada subjek dengan SubjectId = 2. Yang merupakan pelanggaran untuk batasan kunci utama yang ditentukan pada kolom SubjectId.
  • SQLite akan memilih resolusi REPLACE untuk konflik ini. Ini menggantikan nilai yang sudah ada di tabel subjek dengan nilai baru dari pernyataan sisipkan. Jadi, SubjectName " Kursus Database " akan diganti dengan Nama Subjek " Struktur Data ".

Ringkasan:

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