Örnek ile SQLite INSERT, UPDATE, DELETE Sorgusu

SQLite'daki veri değiştirme maddeleri INSERT, UPDATE ve DELETE ifadeleridir. Yeni satır eklemek, mevcut değerleri güncellemek veya veritabanından satır silmek için kullanılır.

Bu eğitimde, öğreneceksiniz-

Aşağıdaki tüm örnekler için, sqlite3.exe dosyasını çalıştırmanız ve örnek veritabanına akan bir bağlantı açmanız gerektiğini unutmayın:

Aşama 1) Bu adımda,

  1. Bilgisayarım'ı açın ve aşağıdaki dizine gidin ' C:sqlite ' ve
  2. Sonra aç' sqlite3.exe ':

Adım 2) Veritabanını aç' ÖğreticilerSampleDB.db ' aşağıdaki komutla: |_+_|

Artık veritabanında herhangi bir sorgu türünü çalıştırmaya hazırsınız.

SQLite EKLE

SQLite INSERT, veritabanının belirtilen bir tablosuna kayıt eklemek için kullanılır. 'INSERT' deyimini kullanmanız gerekir. INSERT yan tümcesi sözdizimi aşağıdaki gibidir:

  • INSERT yan tümcesinden sonra, değerleri hangi tabloya eklemeniz gerektiğini belirtmelisiniz.
  • Tablo adından sonra sütunların listesini yazdıktan sonra içine değerleri eklemek istersiniz.
  • Sütun adını yok sayabilir ve onlara yazamazsınız.
  • Sütun adını yazmazsanız, tabloda bulunan tüm sütunlara aynı sırayla değerler eklenir, sütunlar tabloda tanımlanır.
  • VALUES yan tümcesinden sonra eklenecek değerleri listelemelisiniz.
  • Her INSERT yan tümcesi yalnızca bir satır ekler. Birden çok satır eklemek istiyorsanız, her satır için bir tane olmak üzere birden çok INSERT yan tümcesi yazmalısınız.

SQLite Ekleme Örneği

Aşağıdaki örnekte, öğrenciler tablosuna her öğrenci için bir tane olmak üzere 2 satır ekleyeceğiz: |_+_|

Bu başarıyla çalışmalı ve bunun için çıktı yok:

Bu iki öğrenciyi ekleyecektir:

  • StudentId=11, StudentName = Ahmad, DepartmentId = 4 ve DateOfBirth = 1997-10-12 olan ilk öğrenci.
  • StudentId=12, StudentName = Aly, DepartmentId = 4 ve DateOfBirth = 1996-10-12' olan ikinci öğrenci.

İlk ifadede, sütun adlarını listeledik ' StudentId, StudentName, DepartmentId, DateOfBirth '.Ancak ikinci açıklamada yapmadık.

Dört değer' 12, 'Alı', 4, '1996-10-12' ' Öğrenciler tablosunun dört sütununun tümüne sütunların tanımlandığı sırayla eklenecektir.

Şimdi, aşağıdaki sorguyu çalıştırarak iki öğrencinin Öğrenci tablosuna eklendiğini doğrulayalım: |_+_|

Ardından, bu sorgudan döndürülen iki öğrenciyi aşağıdaki gibi görmelisiniz:

SQLite Güncellemesi

SQLite UPDATE Sorgusu, bir tablodaki mevcut kayıtları değiştirmek için kullanılır. Seçili satırları güncellemek için UPDATE sorgusu ile WHERE yan tümcesini kullanabilirsiniz. UPDATE yan tümcesi, belirli bir sütun için bir değeri değiştirerek bir tabloyu günceller. UPDATE yan tümcesinin sözdizimi aşağıdadır:

Aşağıdaki gibi:

  • Güncelleme deyiminden sonra güncellenecek tablo adını yazmalısınız.
  • Güncellenecek sütun adını ve güncellenecek değeri yazmak için kullanılan 'SET yan tümcesi' yazmanız gerekir.
  • Birden fazla sütunu güncelleyebilirsiniz. Her satır arasında virgül kullanabilirsiniz.
  • Yalnızca bazı satırları belirtmek için bir WHERE yan tümcesi belirtebilirsiniz. Yalnızca ifadenin doğru olarak değerlendirdiği satırlar güncellenir. Bir WHERE yan tümcesi belirtmediyseniz, tüm satırlar güncellenecektir.

SQLite Güncelleme Örneği

Aşağıdaki GÜNCELLEME ifadesinde, Öğrenci Kimliği = 6 olan Öğrenci için Bölüm Kimliğini 3 olacak şekilde güncelleyeceğiz: |_+_|

Bu başarılı bir şekilde çalışmalı ve herhangi bir çıktı almamalısınız:

UPDATE yan tümcesinde, Öğrenciler tablosunu güncellemek istediğimizi belirtmiştik.

  • WHERE yan tümcesinde, tüm öğrencileri yalnızca StudentId = 6 satırını seçecek şekilde filtreledik.
  • SET yan tümcesi, seçilen öğrenciler için Departman Kimliğinin değerini 3 olacak şekilde güncelleyecektir.

Şimdi ID 6'ya sahip öğrencinin güncellendiğini aşağıdaki komutu çalıştırarak doğrulayalım: |_+_|

Şimdi Departman Kimliği değerinin aşağıdaki gibi 3 olduğunu görmelisiniz:

SQLite Sil

SQLite DELETE sorgusu, belirli bir tablodan mevcut kayıtları kaldırmak için kullanılır. Seçili satırları silmek için WHERE yan tümcesini DELETE sorgularıyla birlikte kullanabilirsiniz.

DELETE yan tümcesi aşağıdaki sözdizimine sahiptir:

  • DELETE FROM yan tümcesinden sonra kayıtları silmek istediğiniz tablo adını yazmalısınız. ( Not: ki DELETE yan tümcesi bir tablodan bazı kayıtları silmek veya tüm kayıtları silmek için kullanılır ve tablonun kendisini silmez. Ancak DROP yan tümcesi üzerinde tüm kayıtların bulunduğu tablonun tamamını silmek için kullanılır.)
  • DELETE yan tümcesini 'DELETE FROM guru' gibi yazarsanız, bu guru tablosundaki tüm kayıtları siler.
  • Bazı belirli satırları silmek istiyorsanız, bir ifadeyle WHERE koşulu belirtebilirsiniz. Yalnızca ifadenin doğru olarak değerlendirildiği satırlar silinecektir. Örneğin, 'DELETE FROM guru NEREDE id > 5' - bu, yalnızca kimliği 5'ten büyük olan kayıtları siler.

Örnek

Aşağıdaki açıklamada, StudentId 11 ve 12 olan iki öğrenciyi sileceğiz: |_+_|

İfade ' StudentId = 11 VEYA StudentId = 12 ' sadece 11 ve 12 kimlikli öğrenciler için geçerli olacaktır. Dolayısıyla DELETE yan tümcesi her ikisine de uygulanacak ve sadece onları silecektir.

Bu komut başarıyla çalışmalı ve aşağıdaki gibi herhangi bir çıktı almamalısınız:

Öğrenciler tablosundan tüm kayıtları aşağıdaki gibi seçerek iki öğrencinin silindiğini doğrulayabilirsiniz: |_+_|

Kimlikleri 11 ve 12 olan iki öğrenciyi aşağıdaki gibi görmemelisiniz:

SQLite Çakışma Cümlesi

Aşağıdaki sütun kısıtlamalarından birine sahip bir sütununuz olduğunu varsayalım: UNIQUE, NOT NULL, CHECK veya PRIMARY KEY. Ardından, bu kısıtlamayla çelişen bir değerle bu sütuna bir değer eklemeye veya güncellemeye çalıştınız.

Örneğin, bir sütunun UNIQUE kısıtlaması varsa ve zaten var olan bir değeri (yinelenen bir değer) eklemeye çalıştıysanız ve bu, UNIQUE kısıtlamasıyla çelişiyorsa. O zaman ÇATIŞMA maddesi, bu tür durumlarda bu çatışmayı çözmek için ne yapacağınızı seçmenize izin verir.

CONFLICT yan tümcesinin çatışmayı nasıl çözdüğünü açıklamaya devam etmeden önce. Veritabanı işleminin ne olduğunu anlamalısınız.

Veritabanı İşlemi:

Veritabanı işlemi terimi, SQLite işlemlerinin bir listesidir (ekleme veya güncelleme veya silme). Veritabanı işlemi, tüm işlemler başarılı bir şekilde yürütülsün veya hiç gerçekleştirilmesin, tek bir birim olarak yürütülmelidir. Bunlardan biri gerçekleştirilemezse, tüm işlemler iptal edilecektir.

Bir veritabanı işlemi için örnek:

Bir banka hesabından diğerine para aktarma işlemi birkaç faaliyeti içerecektir. Bu işlem işlemi, ilk hesaptan para çekilmesini ve başka bir hesaba yatırılmasını içerir. Bu işlemin tamamen tamamlanması veya tamamen iptal edilmesi ve yarı yolda kalmaması gerekir.

CONFLICT yan tümcesinde seçebileceğiniz beş kararın listesi:

  1. GERİ DÖNME – bu, çakışan geçerli SQLite ifadesinin bulunduğu işlemi geri alır (tüm işlemi iptal eder). Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırın bir kısıtlamayla çelişen bir değeri varsa, o zaman hiçbir satır güncellenmez, 10 satır aynı kalır. Bir hata atılacak.
  2. KÜRTAJ – bu, yalnızca çakışma olan geçerli SQLite ifadesini iptal eder (iptal eder) ve işlem iptal edilmez. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırın bir kısıtlamayla çelişen bir değeri varsa, yalnızca beşinci değer güncellenmez, diğer 9 satır güncellenir. Bir hata atılacak.
  3. HATA - çakışmaya sahip geçerli SQLite ifadesini iptal eder. Ancak, işlem devam etmeyecek, ancak çakışmanın olduğu satırdan önceki satırlarda yapılan önceki değişiklikler taahhüt edilecektir. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırın bir kısıtlamayla çelişen bir değeri varsa, yalnızca 4 satır güncellenir ve diğeri güncellenmez. Bir hata atılacak.
  1. GÖRMEZDEN GELMEK – bu, kısıtlama ihlalini içeren satırı atlar ve SQLite ifadesinin diğer sonraki satırlarını işlemeye devam eder. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırın bir kısıtlamayla çelişen bir değeri varsa, yalnızca 4 satır güncellenir ve diğeri güncellenmez. Diğer satırları güncellemek için daha fazla ilerlemez ve çakışma değerine sahip satırda durur. Herhangi bir hata atılmayacak.
  1. YER DEĞİŞTİRMEK – ihlali içeren kısıtlamanın türüne bağlıdır:
  • BENZERSİZ veya BİRİNCİL ANAHTAR kısıtlaması için bir kısıtlama ihlali olduğunda. DEĞİŞTİR, ihlale neden olan satırı yeni eklenen veya güncellenen satırla değiştirir.
  • NULL DEĞİL kısıtlama ihlali olduğunda, DEĞİŞTİR yan tümcesi NULL değerini o sütunun varsayılan değeriyle değiştirir. Sütun varsayılan bir değere sahip değilse, SQLite ifadeyi iptal eder (ifade iptal edilir)
  • KONTROL kısıtlama ihlali meydana gelirse, madde iptal edilecektir.

Not: Yukarıdaki 5 çözünürlük, çatışmayı nasıl çözmek istediğinize ilişkin seçeneklerdir. Bir çatışmayı çözmek için geçerli olanın diğer türdeki çatışmaları çözmek için geçerli olması zorunlu olmayabilir.

ÇATIŞMA maddesi nasıl ilan edilir

CREATE TABLE yan tümcesinde bir sütun tanımı için bir kısıtlama tanımladığınızda ON CONFLICT yan tümcesini bildirebilirsiniz. Aşağıdaki sözdizimini kullanarak:

Çatışmayı daha önce açıklandığı gibi çözmek için beş çözümden birini seçebilirsiniz.

ÇATIŞMAYI YAYINLAŞTIRMA Örneği

Aşama 1) Aşağıdaki gibi yeni bir tablo konusu oluşturun: |__+_|

SubjectId sütununda bir PRIMARY KEY kısıtlaması tanımladığımıza dikkat edin. Birincil anahtar kısıtlaması, yinelenen iki değerin SubjectId sütununa eklenmesine izin vermez, bu nedenle bu sütundaki tüm değerler benzersiz olmalıdır. Ayrıca, bir çatışma çözümü seçtiğimize dikkat edin: ' GÖRMEZDEN GELMEK '.

Komut başarıyla çalışmalı ve herhangi bir hata almamalısınız:

Adım 2) Şimdi, yeni tablo konularına bazı değerler ekleyelim, ancak birincil anahtar kısıtlamasını ihlal eden bir değerle: |_+_|

Bu INSERT ifadesinde, birincil anahtar kısıtlamasını ihlal eden aynı Birincil Anahtar Konu kimliği 2'ye sahip iki ders eklemeye çalıştık.

Komutlar iyi çalışmalı ve herhangi bir hata almamalısınız. Aşağıdaki gibi:

Aşama 3) Tablodan tüm konuları aşağıdaki gibi seçin: |__+_|

Bu size konuların listesini verecektir:

Yalnızca üç konunun eklendiğine dikkat edin' Cebir, Veritabanı Kursu ve Algoritmalar ' 4 satır yerine.

'Veri Yapıları' olan birincil anahtar kısıtlamasını ihlal eden değere sahip satır yok sayıldı ve eklenmedi. Ancak, SQLite bu satırdan sonra diğer ifadeleri yürütmeye devam eder.

Adım 4) Aşağıdaki komutu çalıştırarak aşağıdaki örnek için farklı bir ON CONFLICT yan tümcesiyle yeniden oluşturmak için tablo konularını SİL: |_+_|

Drop komutu tüm tabloyu siler. Tablo Konuları artık mevcut değil.

ON CONFICT REPLACE Örneği

Aşama 1) Aşağıdaki gibi yeni bir tablo konusu oluşturun: |__+_|

SubjectId sütununda bir PRIMARY KEY kısıtlaması tanımladığımıza dikkat edin. Birincil anahtar kısıtlaması, yinelenen iki değerin SubjectId sütununa eklenmesine izin vermez, bu nedenle bu sütundaki tüm değerler benzersiz olmalıdır.

Ayrıca, bir çakışma çözme seçeneği seçtiğimize dikkat edin: ' YER DEĞİŞTİRMEK '. Komut başarıyla çalışmalı ve herhangi bir hata almamalısınız:

Adım 2) Şimdi, yeni Tablo Konularına bazı değerler ekleyelim, ancak birincil anahtar kısıtlamasını ihlal eden bir değerle: |_+_|

Bu INSERT ifadesinde, birincil anahtar kısıtlamasını ihlal eden aynı Birincil Anahtar Konu kimliği 2'ye sahip iki ders eklemeye çalıştık.

Komutlar iyi çalışmalı ve herhangi bir hata almamalısınız. Aşağıdaki gibi:

Aşama 3) Tablodan tüm konuları aşağıdaki gibi seçin: |__+_|

Bu size konuların listesini verecektir:

Yalnızca üç konunun eklendiğine dikkat edin' Cebir, Veri Yapıları ve Algoritmalar ' oysa 4 satır eklemeye çalıştık.

Birincil anahtar kısıtlamasını ihlal eden değere sahip satır, ' Veri Yapıları 'değeri değiştirdi' Veritabanı Kursu ' aşağıdaki gibi:

  • İlk iki ekleme ifadesi sorunsuz çalışır. İki ders Cebir ve Veritabanı Kursu 1, 2 kimlikleri ile eklenecektir.
  • SQLite, SubjectId 2 ve SubjectName ' ile üçüncü ekleme ifadesini çalıştırmaya çalıştığında Veri Yapıları ', zaten SubjectId = 2 olan bir konu olduğunu bulur. Bu, SubjectId sütununda tanımlanan birincil anahtar kısıtlaması için bir ihlaldir.
  • SQLite, bu çakışma için bir DEĞİŞTİR çözümü seçecektir. Konular tablosunda zaten var olan değeri, insert deyimindeki yeni değerle değiştirir. Böylece ' Veritabanı Kursu ' KonuAdı ' ile değiştirilecek Veri Yapıları ' Özne ismi.

Özet:

INSERT, UPDATE ve DELETE yan tümceleri, SQLite veritabanındaki verileri değiştirmek için kullanılır. CONFLICT yan tümcesi, veriler ile değiştirilecek veriler arasındaki herhangi bir çakışmayı çözmek için güçlü bir yan tümcedir.