SQLite'daki veri değiştirme cümleleri INSERT, UPDATE ve DELETE ifadeleridir. Yeni satırlar eklemek, mevcut değerleri güncellemek veya veritabanından satır silmek için kullanılır.
Bu eğitimde öğreneceksiniz-
- EKLE
- Güncelleme
- Silme
- Çatışma Maddesi
Aşağıdaki tüm örnekler için, sqlite3.exe dosyasını çalıştırmanız ve akan örnek veritabanına bir bağlantı açmanız gerektiğini unutmayın:
Adım 1) Bu adımda,
- Bilgisayarım'ı açın ve aşağıdaki " C: \ sqlite " dizinine gidin ve
- Ardından " sqlite3.exe " dosyasını açın :
Adım 2) Aşağıdaki komutla " TutorialsSampleDB.db " veritabanını açın :
.open ÖğreticilerSampleDB.db
Artık veritabanında her tür sorguyu çalıştırmaya hazırsınız.
SQLite INSERT
SQLite INSERT, veri tabanının belirli bir tablosuna kayıt eklemek için kullanılır. 'INSERT' maddesini kullanmanız gerekir. INSERT yan tümcesi sözdizimi aşağıdaki gibidir:
- INSERT cümlesinden sonra, değerleri hangi tabloya eklemeniz gerektiğini belirtmelisiniz.
- Sütun listesini yazdığınız tablo adından sonra değerleri eklemek istiyorsunuz.
- Sütun adını göz ardı edebilirsiniz ve onlara yazmayın.
- Sütun adını yazmazsanız, değerler tabloda bulunan tüm sütunlara aynı sırayla eklenir, sütunlar tabloda tanımlanır.
- VALUES cümlesinden 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 birden çok INSERT cümlesi yazmalısınız.
SQLite Ekleme Örneği
Aşağıdaki örnekte, öğrenci tablosuna her öğrenci için bir tane olmak üzere 2 satır ekleyeceğiz:
Öğrencileri EKLEYİN (ÖğrenciKimliği, ÖğrenciAdı, BölümKimliği, Doğum Tarihi)VALUES (11, 'Ahmad', 4, '1997-10-12');INSERT INTO Students VALUES (12, 'Aly', 4, '1996-10-12');
Bu başarılı bir şekilde çalışmalıdır ve bunun için bir çıktı yoktur:
Bu, iki öğrenci 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 " StudentId, StudentName, DepartmentId, DateOfBirth " sütun adlarını listeledik. Ancak, ikinci ifadede bunu yapmadık.
" 12, 'Aly', 4, '1996-10-12' " dört değeri, öğrenciler tablosunun dört sütununa sütunların tanımlandığı sırayla eklenecektir.
Şimdi, aşağıdaki sorguyu çalıştırarak iki öğrencinin Öğrenciler tablosuna eklendiğini doğrulayalım:
Öğrencilerden * SEÇİN;
Ardından bu sorgudan dönen iki öğrenciyi aşağıdaki gibi görmelisiniz:
SQLite Güncellemesi
SQLite GÜNCELLEME 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 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 cümlesinden" 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 cümlesi" yazmalısınız.
- 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 bildiriminde, StudentId = 6 olan Öğrenci için DepartmentId'yi 3 olarak güncelleyeceğiz:
GÜNCELLEME ÖğrencilerSET DepartmentId = 3NEREDE StudentId = 6;
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 belirttik.
- WHERE yan tümcesinde, tüm öğrencileri yalnızca StudentId = 6 satırını seçmeleri için filtreledik.
- SET maddesi, seçilen öğrenciler için Bölüm Kimliği değerini 3 olarak güncelleyecektir.
Şimdi, aşağıdaki komutu çalıştırarak kimliği 6 olan öğrencinin güncellendiğini doğrulayalım:
SEÇİN * StudentId = 6 NEREDE Öğrencilerden;
Şimdi aşağıdaki gibi Departman Kimliği değerinin 3 olduğunu görmelisiniz:
SQLite Silme
SQLite DELETE sorgusu, mevcut kayıtları belirli bir tablodan kaldırmak için kullanılır. Seçili satırları silmek için DELETE sorgularıyla WHERE yan tümcesini kullanabilirsiniz.
DELETE yan tümcesi aşağıdaki sözdizimine sahiptir:
- Kayıtları silmek istediğiniz DELETE FROM yan tümcesinden sonra bir tablo adı yazmanız gerekir. ( Not: Bu DELETE tümcesi . Bir tablodan bazı kayıtları silmek veya tüm kayıtları silmek için kullanılır ve tabloyu kendisi silmez Ancak DAMLA fıkra üzerindeki tüm kayıtları ile tüm tabloyu silmek için kullanılır. )
- Eğer DELETE deyimini "DELETE FROM guru" gibi yazarsanız, bu "guru" tablosundaki tüm kayıtları siler.
- Bazı belirli satırları silmek istiyorsanız, bir ifade ile bir WHERE koşulu belirtebilirsiniz. Yalnızca ifadenin doğru olarak değerlendirildiği satırlar silinir. Örneğin, "id> 5 NEREDE guru'DAN SİL" - bu yalnızca kimliği 5'ten büyük olan kayıtları siler.
Misal
Aşağıdaki ifadede, StudentId 11 ve 12'ye sahip iki öğrenciyi sileceğiz:
StudentId = 11 VEYA StudentId = 12 NEREDE Öğrencilerden SİLİN;
" StudentId = 11 OR StudentId = 12 " ifadesi yalnızca 11 ve 12 kimliklerine sahip öğrenciler için geçerli olacaktır. Bu nedenle, DELETE yan tümcesi her ikisine de uygulanacak ve yalnızca onları silecektir.
Bu komut başarıyla çalışmalı ve aşağıdaki gibi herhangi bir çıktı almamalısınız:
Öğrenciler tablosundaki tüm kayıtları aşağıdaki gibi seçerek iki öğrencinin silindiğini doğrulayabilirsiniz:
Öğrencilerden * SEÇİN;
Kimlik numarası 11 ve 12 olan iki öğrenciyi aşağıdaki gibi görmemelisiniz:
SQLite Çatışma 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 sütuna, bu kısıtlamayla çelişen bir değerle bir değer eklemeye veya güncellemeye çalıştınız.
Örneğin, bir sütunda UNIQUE kısıtlaması varsa ve UNIQUE kısıtlamasıyla çelişen halihazırda var olan bir değeri (yinelenen bir değer) eklemeye çalışmışsanız. Ardından, CONFLICT maddesi, bu tür durumlarda bu çatışmayı çözmek için ne yapacağınızı seçmenize izin verir.
CONFLICT maddesinin ç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ülmüş veya hiç yapılmamış tek birim olarak yürütülmelidir. Bunlardan biri yürütülemediğinde tüm işlemler iptal edilecektir.
Bir veritabanı işlemi için örnek:
Bir banka hesabından diğerine para transfer etme işlemi birkaç faaliyeti içerecektir. Bu işlem işlemi, ilk hesaptan paranın çekilip başka bir hesaba yatırılmasını içerir. Bu işlem tamamen tamamlanmalı veya tamamen iptal edilmeli ve yarıda başarısız olmamalıdır.
CONFLICT maddesinde seçebileceğiniz beş çözümün listesi:
- ROLLBACK - bu, çakışan mevcut 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 bir kısıtlamayla çakışan bir değere sahipse, hiçbir satır güncellenmeyecektir, 10 satır aynı kalacaktır. Bir hata atılacak.
- ABORT - bu, yalnızca çakışan 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 bir kısıtlamayla çakışan bir değere sahipse, yalnızca beşinci değer güncellenmeyecek, ancak diğer 9 satır güncellenecektir. Bir hata atılacak.
- FAIL - çakışan mevcut SQLite ifadesini iptal eder. Ancak, işlem devam etmeyecek, ancak çakışan 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ır bir kısıtlamayla çakışan bir değere sahipse, yalnızca 4 satır güncellenecek ve diğeri olmayacaktır. Bir hata atılacak.
- IGNORE - bu, kısıtlama ihlalini içeren satırı atlar ve SQLite ifadesinin diğer satırlarını işlemeye devam eder. Örneğin, 10 satırı güncellemeye çalışıyorsanız ve beşinci satır bir kısıtlamayla çakışan bir değere sahipse, yalnızca 4 satır güncellenecek ve diğeri olmayacaktır. Diğer satırları güncellemek ve çakışma değerine sahip satırda durmak için daha fazla ilerlemeyecektir. Hiçbir hata atılmayacaktır.
- DEĞİŞTİR - ihlali içeren kısıtlama türüne bağlıdır:
- UNIQUE veya PRIMARY KEY 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.
- NOT NULL kısıtlama 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, SQLite ifadeyi iptal eder (ifade iptal edilir)
- CHECK kısıtlama ihlali meydana gelirse, yan tümce iptal edilecektir.
Not: Yukarıdaki 5 çözünürlük, çatışmayı nasıl çözmek istediğinize dair seçeneklerdir. Bir çatışmayı çözmek için geçerli olan, diğer türdeki çatışmaları çözmek için geçerli olmayabilir.
CONFLICT maddesi nasıl ilan edilir
CREATE TABLE yan tümcesi içindeki bir sütun tanımı için bir sınırlama 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ŞMA HAKKINDA YOKTUR Örnek
Adım 1) Aşağıdaki gibi yeni bir tablo konusu oluşturun:
TABLO OLUŞTUR [Konular] ([SubjectId] ÇATIŞMAYI YOK ETMEDE TAM BİRİNCİL ANAHTAR DEĞİL,[SubjectName] NVARCHAR BOŞ DEĞİL);
SubjectId sütununda bir PRIMARY KEY kısıtlaması tanımladığımıza dikkat edin. Birincil anahtar kısıtlaması, bu sütundaki tüm değerlerin benzersiz olması için SubjectId sütununa yinelenen iki değerin eklenmesine izin vermez. Ayrıca, bir çatışma çözümünü " YOKTUR " olarak seçtiğimize dikkat edin .
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:
INSERT INTO Subject VALUES (1, 'Cebir');Konular DEĞERLERİNE EKLEYİN (2, 'Veritabanı Kursu');INSERT INTO Subject VALUES (2, 'Veri Yapıları');INSERT INTO Subject VALUES (4, 'Algoritmalar');
Bu INSERT deyiminde, 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:
Adım 3) Tablodan tüm konuları aşağıdaki gibi seçin:
Konulardan SEÇ *;
Bu size konuların listesini verecektir:
4 satır yerine sadece üç konunun " Cebir, Veritabanı Kursu ve Algoritmalar " eklendiğine dikkat edin .
"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 cümlesiyle tekrar oluşturmak için tablo konularını SİLİN:
DROP TABLE Konuları;
Drop komutu tüm tabloyu siler. Masa Konuları artık mevcut değil.
ÇATIŞMA ÜZERİNE DEĞİŞTİRME Örneği
Adım 1) Aşağıdaki gibi yeni bir tablo konusu oluşturun:
TABLO OLUŞTUR [Konular] ([SubjectId] ÇATIŞMA DEĞİŞTİRME KONUSUNDA TAM BİRİNCİL ANAHTAR DEĞİL,[SubjectName] NVARCHAR BOŞ DEĞİL);
SubjectId sütununda bir PRIMARY KEY kısıtlaması tanımladığımıza dikkat edin. Birincil anahtar kısıtlaması, konu kimliği sütununa yinelenen iki değerin eklenmesine izin vermez, böylece bu sütundaki tüm değerler benzersiz olmalıdır.
Ayrıca, " DEĞİŞTİR " olarak bir çakışma çözme seçeneği seçtiğimize dikkat edin . Komut başarıyla çalışmalı ve herhangi bir hata almamalısınız:
Adım 2) Şimdi, yeni konular tablosuna, ancak birincil anahtar kısıtlamasını ihlal eden bir değerle bazı değerler ekleyelim:
INSERT INTO Subject VALUES (1, 'Cebir');Konular DEĞERLERİNE EKLEYİN (2, 'Veritabanı Kursu');INSERT INTO Subject VALUES (2, 'Veri Yapıları');INSERT INTO Subject VALUES (4, 'Algoritmalar');
Bu INSERT deyiminde, 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:
Adım 3) Tablodan tüm konuları aşağıdaki gibi seçin:
Konulardan SEÇ *;
Bu size konuların listesini verecektir:
Sadece üç deneğin " Cebir, Veri Yapıları ve Algoritmalar " eklendiğine, oysa biz 4 satır eklemeye çalıştığımıza dikkat edin.
" Veri Yapıları " olan birincil anahtar kısıtlamasını ihlal eden değere sahip satır, " Veritabanı Kursu " değerini aşağıdaki gibi değiştirdi:
- İlk iki insert deyimi sorunsuz çalışır. İki konu Cebir ve Veritabanı Kursu 1, 2 no'lu kimliklerle eklenecektir.
- SQLite, SubjectId 2 ve SubjectName " Veri Yapıları " ile üçüncü insert deyimini çalıştırmayı denediğinde , zaten SubjectId = 2 olan bir özne 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 ifadesindeki yeni değerle değiştirir. Bu nedenle, " Veritabanı Kursu " KonuAdı " Veri Yapıları " KonuAdı ile değiştirilecektir .
Özet:
INSERT, UPDATE ve DELETE yan tümceleri SQLite veritabanındaki verileri değiştirmek için kullanılır. CONFLICT maddesi, veriler ile değiştirilecek veriler arasındaki herhangi bir çatışmayı çözmek için güçlü bir maddedir.