İlişkili Tablolar ile Sorgu Hazırlamak
UPDATE Deyimi
Tablodaki verilerin güncellenmesi için UPDATE komutu kullanılır.
UPDATE komutunda where koşul cümleciğinin doğru ve eksiksiz olması hayati önem taşımaktadır.
UPDATE ile başlayan komutlar çalıştırılmadan önce aynı koşul cümleciklerini içeren select sorgusunun çalıştırılması, güncellenecek kayıtların güncellenmeden önce yeniden gözden geçirilmesine olanak sağlayacağından hata yapılmasını (yanlış kayıtların ya da istenenden daha fazla kaydın güncellenmesini/silinmesini vs.) önlemek adına alınabilecek iyi bir tedbir olur.
Bazen bir tablodaki sütunu başka bir tabloda bulunan verilerle güncellememiz gerekebilir. Bu durumda join ifadesi ile tablolar birleştirilerek güncelleme işlemi yapılır.
Benzer şekilde, güncelleme işleminde, aynı sunucuda yer alan başka bir veri tabanındaki tablolardan da veri alınabilir.
DELETE Deyimi
Tablodaki verilerin silinmesi için DELETE komutu kullanılır.
DELETE FROM tabloAdi şeklinde kullanılır.
Delete komutu ile artık ihtiyaç duyulmayan kayıtları, yanlışlıkla eklenmiş kayıtları vs. silebiliriz.
"DELETE FROM Birey" Sorgusu Birey tablosundaki tüm kayıtları siler. Eğer tüm kayıtların silinmesi gerekmiyorsa, koşul cümlecikleri sorguya dâhil edilip sadece silinmesi istenen kayıtların sorgudan etkilenmesi sağlanmalıdır.
UPDATE komutunda olduğu gibi DELETE komutunda da koşul cümlecikleri hayati önem arz etmektedir.
DELETE ile başlayan komutlar çalıştırılmadan önce aynı koşul cümleciklerini içeren select sorgusunun çalıştırılması, silinecek kayıtların silinmeden önce yeniden gözden geçirilmesine olanak sağlayacağından hata yapılmasını (yanlış kayıtların ya da istenenden daha fazla kaydın silinmesini vs.) önlemek adına alınabilecek iyi bir tedbir olur.
DELETE komutundan tüm satır etkilenir. Sadece bir(kaç) sütunun verisini silmek gibi bir durum söz konusu değildir. Tüm satırı değil de bazı sütunları silmemiz gerekiyor ise bunu silmek istediğimiz sütunları NULL veyahut‘’ gibi boş değerler kullanarak update komutu ile güncellemek sureti ile gerçekleyebiliriz. Eğer silmek istenen sütunlar tablonun tamamı için silinmek isteniyorsa (where koşul cümleciği kullanılmadan silinmek isteniyorsa) ve sütunlar bir daha kullanılmayacaksa 'alter table ... drop column ... ' komutu ile istenen sütunlar tablodan tamamen silinebilir.
DELETE komutu ile aynı anda sadece bir tablodan veri silinebilir.
Bazen bir tablodan veri silineceği zaman, başka tablo(lar)daki veriler kullanılarak silinmesi gerekebilir. Bu durumda join ifadesi ile tablolar birleştirilerek silme işlemi yapılır.
Veri Bütünlüğü
Tablodan satır silerken veri tabanındaki bütünlüğü bozmamamız gerekir, dolayısı ile bir tablodan satır silerken silinecek satırı referans alan başka bir tablo varsa silme işleminden sonra veri bütünlüğü bozulacaktır. Bu yüzden silinecek satırların bağlantılarını kontrol ederek silmemiz gerekir. Birbiri ile ilişkili tablolar yabancı anahtar ile birbirlerine bağlı ise bu kontrolü SQL Server’in kendisi zaten yapmaktadır.
TRUNCATE Deyimi
TRUNCATE deyimi koşul cümleciği olmadan yazılan DELETE komutu ile aynı silme işlemini yapar.
TRUNCATE komutu, bir tablodaki tüm verilerin silinmek istendiği fakat bu silme işlemi için satır bazlı transaction log kayıtlarının oluşturulmasının istenmediği durumlarda kullanılır. Dolayısı ile TRUNCATE komutu kullanıldıktan sonra ROLLBACK komutu ile işlem geri alınamaz (çünkü TRUNCATE komutu sonrası transaction log kaydı tutulmaz).
TRUNCATE komutunda istense de WHERE deyimi kullanılamaz. Koşul belirtilecekse DELETE komutu kullanılmalıdır.
Bir tablodan herhangi bir kayıt silindikten sonra silinen kaydın birincil anahtar sütunundaki değer artık boşta olmasına rağmen yeniden kullanılmaz. Birey tablosundan koşul cümleciği yazmadan silme işlemi yapıldığında tabloda kayıt kalmaz ama tabloya ekleme yapıldığında ID sütununun alacağı değer, en son verilmiş ID değerinden devam eder. Bu durum silme işleminin DELETE komutu ile yapılması hâlinde geçerlidir. Tablodaki tüm veriler TRUNCATE deyimi ile silinirse eğer tabloya yeniden ekleme yapıldığında birincil anahtar sütununa (ID) başlangıç değerinden itibaren değer verilir.