Veritabanı

SQL UPDATE ve DELETE Komutları

SQL UPDATE ve DELETE Komutları

İlişkisel veritabanı yönetim sistemlerinde (RDBMS) veriyi sadece okumak ya da yeni kayıt eklemek tek başına yeterli değildir. Dinamik sistemlerde kullanıcı bilgileri güncellenir, sipariş durumları değişir ya da geçerliliğini yitiren verilerin sistemden kaldırılması gerekir. Bu tür veri manipülasyon işlemlerinde SQL dilinin sunduğu en temel iki araç UPDATE ve DELETE komutlarıdır.

Veri Manipülasyonunun Temeli: DML

SQL komutları farklı kategorilere ayrılır. Tabloların yapısını tanımlayan DDL (Data Definition Language) komutlarının aksine, doğrudan tablonun içerisindeki kayıtlarla ilgilenen komut grubuna DML (Data Manipulation Language) adı verilir. INSERT komutu ile tabloya yeni satırlar eklenirken, bu satırların üzerinde değişiklik yapılması ve gerektiğinde tamamen kaldırılması sürecini UPDATE ve DELETE yönetir.

Bu iki komut doğrudan canlı veriyi hedef aldığı için yazılım geliştiricilerin ve veritabanı yöneticilerinin en dikkatli kullanması gereken işlemler arasında yer alır. Hatalı bir filtreleme sonucunda geri dönüşü zor veri kayıpları yaşanabilir.

SQL UPDATE Komutu ile Kayıtları Güncelleme

UPDATE komutu, bir tablodaki mevcut bir veya birden fazla satırın belirli sütunlarındaki değerleri değiştirmek için kullanılır. İşlem sonucunda yeni bir satır eklenmez, var olan satırın verisi güncellenir.

Temel sözdizimi şu şekildedir:

UPDATE tablo_adi
SET sutun1 = yeni_deger1, sutun2 = yeni_deger2
WHERE kosul;

Bu yapıda UPDATE ifadesinden sonra işlem yapılacak tablo belirtilir. SET anahtar kelimesi ise hangi sütuna hangi yeni değerin atanacağını tanımlar. WHERE bloğu, güncellemenin yalnızca hangi kayıtlar üzerinde geçerli olacağını sınırlar.

Tek Bir Değeri Güncelleme

Aşağıdaki örnekte, “kullanicilar” tablosunda yer alan ve id değeri 10 olan kullanıcının e-posta adresinin nasıl güncellendiği gösterilmektedir:

UPDATE kullanicilar
SET eposta = 'ahmet.yeni@example.com'
WHERE id = 10;

Bu sorgu çalıştırıldığında veritabanı motoru yalnızca id değeri 10 olan satırı bulur ve ilgili satırın eposta sütununa yeni adresi yazar. Tablodaki diğer hiçbir kullanıcı bu işlemden etkilenmez.

Birden Fazla Sütunu Güncelleme

Tek bir UPDATE sorgusu ile aynı satırdaki birden fazla sütun aynı anda değiştirilebilir. Bunun için SET bloğundaki sütun atamaları arasına virgül koymak yeterlidir:

UPDATE kullanicilar
SET durum = 'aktif', son_giris_tarihi = '2023-10-25'
WHERE id = 10;

Bu örnekte, aynı kullanıcının hem hesap durumu hem de son oturum açma tarihi tek bir adımda güncellenmiştir.

SQL DELETE Komutu ile Kayıt Silme

DELETE komutu, tablodaki belirli satırları tamamen kaldırmak için kullanılır. Bu işlem satır bazında gerçekleşir; yani belirli bir sütundaki hücreyi değil, tüm kaydı tablodan yok eder.

Temel sözdizimi şu şekildedir:

DELETE FROM tablo_adi
WHERE kosul;

DELETE FROM ifadesinin ardından tablonun adı yazılır ve hemen ardından silinecek satırları filtrelemek için WHERE koşulu tanımlanır.

Belirli Bir Kaydı Silme

Aşağıdaki örnek, “siparisler” tablosunda yer alan ve siparis_no değeri 504 olan kaydın silinmesini sağlar:

DELETE FROM siparisler
WHERE siparis_no = 504;

Veritabanı motoru siparis_no değeri 504 olan tekil satırı tespit eder ve o satırı tablodan fiziksel olarak kaldırır.

Koşula Bağlı Toplu Silme İşlemi

DELETE komutu yalnızca tek bir satırı değil, verilen mantıksal koşulu sağlayan birden fazla satırı da silebilir:

DELETE FROM log_kayitlari
WHERE olusturma_tarihi < '2023-01-01';

Bu komut, 2023 yılından önce oluşturulmuş tüm sistem kayıtlarını tablodan temizlemek için kullanılır. Koşulu sağlayan satır sayısı ne kadar fazlaysa, silinen veri miktarı da o oranda artar.

Kritik Nokta: WHERE Koşulunun Önemi

Hem UPDATE hem de DELETE komutlarında WHERE koşulunun kullanılması zorunlu değildir; ancak bu koşul yazılmadığında işlem tüm tabloya uygulanır. Bu durum ilişkisel veritabanlarında yapılan en yaygın ve tehlikeli hataların başında gelir.

  • Bir UPDATE sorgusunda WHERE koşulu unutulursa, tablodaki tüm satırların ilgili sütunları aynı değere eşitlenir.
  • Bir DELETE sorgusunda WHERE koşulu unutulursa, tablonun yapısı korunur ancak tablodaki tüm kayıtlar geri dönülmez şekilde silinir.

Bu nedenle doğrudan üretim ortamında (production) bu komutları çalıştırmadan önce güvenlik filtreleri uygulanmalıdır.

Güvenli Güncelleme ve Silme İçin En İyi Uygulamalar

Canlı sistemlerde veri bütünlüğünü korumak ve olası felaketlerin önüne geçmek adına geliştiricilerin izlemesi gereken bazı temel güvenlik alışkanlıkları bulunur:

  • Önce SELECT ile test edin: Bir DELETE ya da UPDATE sorgusu yazmadan önce, aynı WHERE koşulunu içeren bir SELECT sorgusu çalıştırın. Böylece hangi satırların etkileneceğini önceden görmüş olursunuz.
  • Transaction mekanizmasından yararlanın: İşlemleri BEGIN TRANSACTION bloğu içinde çalıştırın. Beklenen satır sayısı dışında bir sonuçla karşılaşırsanız ROLLBACK komutuyla işlemi geri alabilir, işlem doğruysa COMMIT ile kalıcı hale getirebilirsiniz.
  • Yazılımsal güvenlik mekanizmalarını (Soft Delete) tercih edin: Verileri fiziksel olarak tablodan silmek yerine, tabloda “silindi_mi” şeklinde boolean bir sütun tutarak ilgili kaydı pasife çekmek modern yazılım mimarilerinde daha güvenli bir yaklaşımdır.

Transaction ile Güvenli İşlem Örneği

BEGIN TRANSACTION;

UPDATE musteriler
SET bakiye = bakiye - 100
WHERE musteri_kodu = 'M102';

-- Etkilenen satır sayısını kontrol ettikten sonra:
COMMIT;
-- veya hata tespit edilirse:
-- ROLLBACK;

Bu yapı sayesinde veritabanında yapılan işlem doğrudan kalıcı hale gelmez; kontrol mekanizmasının ardından onaylanabilir veya tamamen iptal edilebilir.

Özet ve Sonraki Adımlar

SQL UPDATE ve DELETE komutları, veritabanı kayıtlarının yaşam döngüsünü yöneten güçlü ve vazgeçilmez araçlardır. UPDATE ile veriler dönüştürülürken, DELETE ile sistemden arındırılır. Her iki komutta da WHERE filtresinin hassasiyetle yapılandırılması, veri kaybı riskini ortadan kaldıran en temel kuraldır.

Bir sonraki aşamada, ilişkili tablolarda veri bütünlüğünü sağlayan yabancı anahtar (Foreign Key) kısıtlamalarını ve bu kısıtlamaların ON DELETE CASCADE gibi parametrelerle UPDATE ve DELETE işlemlerine etkilerini inceleyebilirsiniz.

#sql#sql delete#sql update#veri yönetimi#veritabanı

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yaz

Yorumlar yönetici onayından sonra yayınlanır.