SQLite Örnekle Sorguyu INSERT, UPDATE, DELETE

Veri değiştirme hükümleri SQLite 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.

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

) 1 Adım Bu adımda,

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

SQLite Sorgu - EKLE, GÜNCELLE, SİL

) 2 Adım Veritabanını aç “ÖğreticilerSampleDB.db” aşağıdaki komutla:

.open TutorialsSampleDB.db

SQLite Sorgu - EKLE, GÜNCELLE, SİL

Artık veritabanında her türlü sorguyu çalıştırmaya hazırsınız.

SQLite INSERT

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

SQLite INSERT

  • INSERT deyiminden sonra değerleri hangi tabloya eklemeniz gerektiğini belirtmelisiniz.
  • Tablo adından sonra eklemek istediğiniz sütunların listesini yazıyorsunuz.
  • Sütun adlarını göz ardı edebilir ve onlara yazmayabilirsiniz.
  • Sütun adını yazmazsanız değerler tabloda bulunan tüm sütunlara aynı sırayla eklenecektir, sütunlar tabloda tanımlanmıştır.
  • VALUES deyiminden sonra eklenecek değerleri listelemelisiniz.
  • Her INSERT yan tümcesi yalnızca bir satır ekler. Birden fazla satır eklemek istiyorsanız, her satır için bir tane olmak üzere birden fazla INSERT cümleciği yazmalısınız.

SQLite Örnek Ekle

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

INSERT INTO Students(StudentId, StudentName, DepartmentId, DateOfBirth)
              VALUES(11, 'Ahmad', 4, '1997-10-12');

INSERT INTO Students VALUES(12, 'Aly', 4, '1996-10-12');

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

SQLite Ekle

Bu iki öğrenciyi ekleyecektir:

  • Öğrenci Kimliği=11, ÖğrenciAdı = Ahmad, Departman Kimliği = 4 ve Doğum Tarihi = 1997-10-12 olan ilk öğrenci.
  • ÖğrenciId=12, ÖğrenciAdı = Aly, DepartmanId = 4 ve Doğum Tarihi = 1996-10-12′ olan ikinci öğrenci.

İlk açıklamada sütun adlarını sıraladık”Öğrenci Kimliği, Öğrenci Adı, Bölüm Kimliği, Doğum Tarihi“.Ancak ikinci açıklamada bunu yapmadık.

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

Şimdi, iki öğrencinin Students tablosuna eklendiğini aşağıdaki komutu çalıştırarak doğrulayalım sorgu:

SELECT * FROM Students;

O zaman bu sorgudan dönen iki öğrenciyi şu şekilde görmelisiniz:

SQLite Ekle

SQLite Güncelle

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 sorgusuyla WHERE ifadesini kullanabilirsiniz. UPDATE ifadesi, belirli bir sütun için bir değeri değiştirerek bir tabloyu günceller. UPDATE ifadesinin sözdizimi aşağıdadır:

SQLite Güncelle

Aşağıdaki gibi:

  • Güncelleme cümlesinden sonra güncellenecek tablonun adını yazmalısınız.
  • Güncellenecek sütun adını ve güncellenecek değeri yazmak için kullanılan “SET cümlesi” yazmanız gerekmektedir.
  • Birden fazla sütunu güncelleyebilirsiniz. Her satır arasında virgül kullanabilirsiniz.
  • Yalnızca bazı satırları belirtmek için WHERE yan tümcesini belirtebilirsiniz. Yalnızca ifadenin doğru olarak değerlendirdiği satırlar güncellenir. WHERE yan tümcesini belirtmediyseniz tüm satırlar güncellenecektir.

SQLite Güncelleme Örneği

Aşağıdaki UPDATE ifadesinde, StudentId = 6 olan Öğrenci için DepartmentId değerini 3 olarak güncelleyeceğiz:

UPDATE Students
SET DepartmentId = 3 
WHERE StudentId = 6;

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

SQLite Güncelle

UPDATE deyiminde Students tablosunu güncellemek istediğimizi belirttik.

  • WHERE deyiminde tüm öğrencileri yalnızca ÖğrenciId = 6 satırını seçecek şekilde filtreledik.
  • SET cümlesi seçilen öğrenciler için Departman Kimliği değerini 3 olacak şekilde güncelleyecektir.

Şimdi ID'si 6 olan öğrencinin güncellendiğini aşağıdaki komutu çalıştırarak doğrulayalım:

SELECT * FROM Students WHERE StudentId = 6;

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

SQLite Güncelle

SQLite Sil

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

DELETE ifadesinin söz dizimi aşağıdaki gibidir:

SQLite Sil

  • Kayıt silmek istediğiniz DELETE FROM deyiminden sonra tablo adını yazmanız gerekmektedir. (Not: ki DELETE yan tümcesi Bir tablodaki bazı kayıtları silmek veya tüm kayıtları silmek için kullanılır ve tablonun kendisini silmez. Ancak DROP cümlesi Tablonun tamamını, üzerindeki tüm kayıtlarla birlikte silmek için kullanılır.)
  • Eğer DELETE cümlesini “DELETE FROM guru” şeklinde yazarsanız bu “guru” tablosundaki tüm kayıtları silecektir.
  • Belirli satırlardan bazılarını silmek istiyorsanız bir ifadeyle WHERE koşulunu belirtebilirsiniz. Yalnızca ifadenin doğru olarak değerlendirildiği satırlar silinecektir. Örneğin, "DELETE FROM guru WHERE id > 5" - bu yalnızca kimliği 5'ten büyük olan kayıtları siler.

Örnek E-posta

Aşağıdaki ifadede StudentId'si 11 ve 12 olan iki öğrenciyi sileceğiz:

DELETE FROM Students WHERE StudentId = 11 OR StudentId = 12;

İfade "Öğrenci Kimliği = 11 VEYA Öğrenci Kimliği = 12” yalnızca kimliği 11 ve 12 olan öğrenciler için geçerli olacaktır. Yani DELETE cümlesi her ikisine de uygulanacak ve yalnızca onları silecektir.

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

SQLite Sil

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

SELECT * FROM Students;

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

SQLite Sil

SQLite Uyuşmazlık Maddesi

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. Ve sonra bu kısıtlamayla çakışan bir değere sahip bir sütuna bir değer eklemeye veya güncellemeye çalıştınız.

Örneğin, bir sütunda UNIQUE kısıtlaması varsa ve zaten var olan bir değeri (yinelenen bir değer) eklemeye çalıştıysanız, bu da UNIQUE kısıtlamasıyla çelişir. Daha sonra CONFLICT cümleciği, bu tür durumlarda bu çatışmayı çözmek için ne yapacağınızı seçmenize izin verir.

CONFLICT cümlesinin ç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, aşağıdakilerin bir listesidir: SQLite işlemler (ekleme veya güncelleme veya silme). Veritabanı işlemi tek bir birim olarak yürütülmelidir, tüm işlemler başarıyla yürütülmeli veya hiç yürütülmemelidir. Bunlardan biri yürütülemezse tüm işlemler iptal edilecektir.

Veritabanı işlemine örnek

Bir banka hesabından diğerine para aktarma işlemi birkaç faaliyeti içerecektir. Bu işlem işlemi, ilk hesaptan para çekilip 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 maddesinde seçebileceğiniz beş çözümün listesi aşağıda verilmiştir:

  1. GERİ DÖNÜŞ – bu, mevcut işlemin geri alınmasını sağlar SQLite çelişkili beyan (tüm işlemi iptal edecektir). Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırda bir kısıtlamayla çakışan bir değer varsa hiçbir satır güncellenmeyecek, 10 satır aynı kalacaktır. Bir hata atılacak.
  2. ABORT – bu mevcut işlemi iptal eder (iptal eder) SQLite yalnızca çelişkinin olduğu bildirimi kullanın ve işlem iptal edilmeyecektir. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırda bir kısıtlamayla çakışan bir değer varsa, yalnızca beşinci değer güncellenmeyecek ancak diğer 9 satır güncellenecektir. Bir hata atılacak.
  3. HATA - akımı iptal eder SQLite çelişki içeren ifade. Ancak işlem devam etmeyecek ancak çakışmanın olduğu satırdan önceki satırlarda yapılan önceki değişiklikler uygulanacaktır. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırda bir kısıtlamayla çakışan bir değer varsa, yalnızca 4 satır güncellenecek, diğeri güncellenmeyecektir. Bir hata atılacak.
  1. YOKSAY – bu, kısıtlama ihlalini içeren satırı atlayacak ve diğer satırların işlenmesine devam edecektir. SQLite ifade. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satırda bir kısıtlamayla çakışan bir değer varsa, yalnızca 4 satır güncellenecek, diğeri güncellenmeyecektir. Diğer satırları güncellemek için daha fazla ilerlemeyecek ve çakışma değerine sahip satırda durmayacak. Hiçbir hata atılmayacaktır.
  1. DEĞİŞTİR – ihlalin olduğu kısıtlamanın türüne bağlıdır:
  • UNIQUE veya PRIMARY KEY kısıtlaması için bir kısıtlama ihlali olduğunda. REPLACE, ihlale neden olan satırı yeni eklenen veya güncellenen satırla değiştirecektir.
  • NOT NULL kısıtlaması ihlali olduğunda, REPLACE yan tümcesi NULL değerini o sütunun varsayılan değeriyle değiştirir. Sütunun varsayılan bir değeri yoksa, o zaman SQLite beyanı iptal edecek (beyanname iptal edilecek)
  • CHECK kısıtlaması ihlali meydana gelirse, madde iptal edilir.

Not: Yukarıdaki 5 çözüm, çatışmayı nasıl çözmek istediğinize ilişkin seçeneklerdir. Bir çatışmayı çözmek için geçerli olanın, diğer çatışma türlerini çözmek için de geçerli olması gerekmeyebilir.

CONFLICT deyimi nasıl bildirilir

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

SQLite Uyuşmazlık Maddesi

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

ÇATIŞMA ÜZERİNDE GÖZALDI Örnek

) 1 Adım Aşağıdaki gibi yeni bir tablo konusu oluşturun:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT IGNORE,
    [SubjectName] NVARCHAR NOT NULL
);

SubjectId sütununda bir PRIMARY KEY kısıtlaması tanımladığımıza dikkat edin. Birincil anahtar kısıtlaması, SubjectId sütununa iki kopya değerin eklenmesine izin vermez, böylece o sütundaki tüm değerler benzersiz olmalıdır. Ayrıca, bir çatışma çözümünü şu şekilde seçtiğimize dikkat edin: "YOKSAY".

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

ÇATIŞMA ÜZERİNDE GÖZALDI Örnek

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

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');

Bu INSERT deyiminde, aynı Birincil Anahtar Konu Kimliği 2'ye sahip iki ders eklemeye çalıştık, bu da birincil anahtar kısıtlamasının ihlalidir.

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

ÇATIŞMA ÜZERİNDE GÖZALDI Örnek

) 3 Adım Tablodaki tüm konuları aşağıdaki gibi seçin:

SELECT * FROM Subjects;

Bu size konuların listesini verecektir:

ÇATIŞMA ÜZERİNDE GÖZALDI Örnek

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

Birincil anahtar kısıtlamasını ihlal eden değere sahip olan "Veri Yapıları" satırı göz ardı edildi ve eklenmedi. Fakat, SQLite bu satırdan sonra diğer ifadeleri yürütmeye devam eder.

) 4 Adım Aşağıdaki örnek için farklı bir ON CONFLICT ifadesiyle yeniden oluşturmak üzere tablo konularını SİLMEK için aşağıdaki komutu çalıştırın:

DROP TABLE Subjects;

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

ÇATIŞMA ÜZERİNDE DEĞİŞTİRME Örnek

) 1 Adım Aşağıdaki gibi yeni bir tablo konusu oluşturun:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    [SubjectName] NVARCHAR NOT NULL
);

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

Ayrıca, bir çatışma çözümü seçeneğini "" olarak seçtiğimize dikkat edin.DEĞİŞTİR“. Komut başarıyla çalışmalı ve herhangi bir hata almamalısınız:

ÇATIŞMA ÜZERİNDE DEĞİŞTİRME Örnek

) 2 Adım Şimdi yeni Subjects tablosuna, birincil anahtar kısıtlamasını ihlal eden bir değerle bazı değerler ekleyelim:

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');

Bu INSERT deyiminde, aynı Birincil Anahtar Konu Kimliği 2'ye sahip iki ders eklemeye çalıştık, bu da birincil anahtar kısıtlamasının ihlalidir.

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

ÇATIŞMA ÜZERİNDE DEĞİŞTİRME Örnek

) 3 Adım Tablodaki tüm konuları aşağıdaki gibi seçin:

SELECT * FROM Subjects;

Bu size konuların listesini verecektir:

ÇATIŞMA ÜZERİNDE DEĞİŞTİRME Örnek

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

Birincil anahtar kısıtlamasını ihlal eden değere sahip olan satır: "Veri Yapıları"değerinin yerini aldı"Veri Tabanı Kursu” aşağıdaki gibi:

  • İlk iki insert ifadesi sorunsuz bir şekilde çalışıyor. İki konu Cebir ve Veritabanı Kursu kimlikleri 1, 2 ile eklenecektir.
  • Ne zaman SQLite üçüncü insert ifadesini SubjectId 2 ve SubjectName ile çalıştırmaya çalışır "Veri Yapıları“, zaten SubjectId = 2 olan bir konu olduğunu tespit ediyor. Bu, SubjectId sütununda tanımlanan birincil anahtar kısıtlamasının ihlalidir.
  • SQLite bu çatışma için DEĞİŞTİRME çözümünü seçecektir. Konular tablosunda zaten mevcut olan değeri, insert ifadesindeki yeni değerle değiştirir. Böylece "Veri Tabanı Kursu” KonuAdı “ ile değiştirilecekVeri Yapıları" Özne ismi.

ÖZET

INSERT, UPDATE ve DELETE cümleleri veriyi değiştirmek için kullanılır. SQLite veritabanı. CONFLICT yan tümcesi, veriler ile değiştirilecek veriler arasındaki herhangi bir çelişkiyi çözen güçlü bir yan tümcedir.

Günlük Guru99 Bülteni

Gününüze, şu anda elinize ulaşan en son ve en önemli yapay zeka haberleriyle başlayın.