SQL Dilinde SQL DELETE Kullanımı
DELETE ifadesi, bir tablodan bir veya daha fazla satırı kalıcı olarak kaldırmak için kullanılır. Bu makale, DELETE ifadesinin sözdizimini, kullanımını ve dikkat edilmesi gereken önemli noktaları detaylı bir şekilde ele alacaktır.Sözdizimi
DELETE ifadesinin temel sözdizimi aşağıdaki gibidir:
DELETE FROM tablo_adi
WHERE kosul;Tüm satırları silmek için WHERE koşulu atlanabilir:
DELETE FROM tablo_adi;DELETE ifadesinin bileşenleri şunlardır:
DELETE FROM: Bu anahtar kelimeler, belirtilen tablodan satır silme işlemini başlatır.tablo_adi: Verilerin silineceği tablonun adıdır. Bu, işlemin hedefidir.WHERE kosul: İsteğe bağlı bir koşuldur. Bu koşul belirtilirse, yalnızca koşulu karşılayan satırlar silinir. EğerWHEREkoşulu belirtilmezse, tablodaki tüm satırlar silinir. Bu durum geri alınamaz olduğundan büyük dikkat gerektirir. Koşul, bir veya daha fazla sütun üzerinde mantıksal operatörler (=,<>,<,>,<=,>=,LIKE,IN,BETWEENvb.) kullanılarak tanımlanır.
Örnekler
Aşağıdaki örnekler, DELETE ifadesinin çeşitli senaryolarda nasıl kullanılacağını göstermektedir. Örneklerde, Calisanlar adında bir tablonun var olduğu varsayılmaktadır.
Örnek 1: Belirli Bir Satırı Silme
Calisanlar tablosundan CalisanID'si 101 olan çalışanı silmek için:
DELETE FROM Calisanlar
WHERE CalisanID = 101;Örnek 2: Birden Fazla Satırı Koşula Göre Silme
Calisanlar tablosundan 'Pazarlama' departmanında çalışan tüm personeli silmek için:
DELETE FROM Calisanlar
WHERE Departman = 'Pazarlama';Örnek 3: Belirli Bir Tarihten Önceki Kayıtları Silme
Calisanlar tablosundan GirisTarihi 2020 yılından önce olan tüm çalışanları silmek için:
DELETE FROM Calisanlar
WHERE GirisTarihi < '2020-01-01';Örnek 4: Tüm Satırları Silme (WHERE koşulu olmadan)
Calisanlar tablosundaki tüm kayıtları silmek için:
DELETE FROM Calisanlar;Bu işlem, tablonun yapısını korurken tüm verileri kalıcı olarak kaldırır.
Önemli Notlar
Yedekleme:
DELETEişlemini gerçekleştirmeden önce her zaman veri tabanınızı yedekleyin. Yanlışlıkla yapılan silme işlemleri geri alınamaz sonuçlar doğurabilir.WHEREKoşulunun Önemi:WHEREkoşulunu dikkatlice yazın ve doğruluğundan emin olun. Koşulun yanlış olması, beklenenden daha fazla veya yanlış verilerin silinmesine yol açabilir.TRUNCATE TABLEvs.DELETE: Tüm satırları silmek içinDELETE FROM tablo_adi;yerineTRUNCATE TABLE tablo_adi;de kullanılabilir. Ancak bu iki komut arasında önemli farklar vardır:DELETE, satır satır silme işlemi yapar ve her silinen satır için işlem günlüğü (transaction log) kaydı tutar. Bu nedenle daha yavaş olabilir ve geri alınabilir (ROLLBACK) bir işlem olabilir.TRUNCATE TABLE, tabloyu yeniden oluşturarak daha hızlı bir şekilde tüm verileri siler. İşlem günlüğüne minimum kayıt yazar, bu yüzden daha performanslıdır. Ancak, bu işlem genellikle geri alınamaz (ROLLBACKedilemez).
İlişkisel Bütünlük (Referential Integrity): Bir tabloda silmeye çalıştığınız veriler başka bir tablonun dış anahtar (
FOREIGN KEY) kısıtlamaları tarafından referans alınıyorsa, silme işlemi başarısız olabilir veya ilişkili verilerin de silinmesini (ON DELETE CASCADE) tetikleyebilir. Veri tabanı tasarımınızı ve kısıtlamalarınızı anlayın.İşlem Kontrolü (Transaction Control): Özellikle kritik silme işlemleri için
BEGIN TRANSACTION(veyaSTART TRANSACTION),COMMITveROLLBACKkomutlarını kullanın. Bu, silme işlemini test etmenize ve gerekirse geri almanıza olanak tanır.
BEGIN TRANSACTION; DELETE FROM Calisanlar WHERE CalisanID = 101; -- SELECT * FROM Calisanlar WHERE CalisanID = 101; -- Silinip silinmediğini kontrol et -- COMMIT; -- Değişiklikleri kalıcı hale getir -- ROLLBACK; -- Değişiklikleri geri al
        
                
            
            
Yorum yap
Yorumlar