DELETE ile Kayıt Silme başlıklı yazıda DELETE komutunun kullanımı anlatılmıştır. Şimdi ise işlev olarak birbirine benzeyen TRUNCATE ile DELETE işlemlerinin arasındaki fark aşağıdaki öğrenci tablosu üzerinde anlatılacaktır.
Öğrenci tablomuzun silme işlemlerinden etkilenmemesi için öğrenci tablosundan ogrenci_yedek_1 ve ogrenci_yedek_2 olmak üzere 2 adet yedek oluşturuldu. Tablonuzun alan ve kayıtları ile beraber kopyalamak için SELECT INTO komutları kullanılır.
1 2 | SELECT * INTO ogrenci_yedek_1 FROM ogrenci; SELECT * INTO ogrenci_yedek_2 FROM ogrenci; |
Tablomuzdaki tüm kayıtları silmek için DELETE komutunu kullandığımızda tüm kayıtları siler. Ancak kayıt silme işleminden sonra tabloya yeni eklenen kaydın otomatik artan ID (Numara) değeri bir önceki tabloda kalınan yerden devam eder. Yani ID değeri sıfırlanmaz.
Örneğin ogrenci_yedek_1 tablosundaki tüm kayıtları DELETE komutu ile silelim ve tablo içeriğini görüntüleyelim.
1 2 | DELETE FROM ogrenci_yedek_1; SELECT * FROM ogrenci_yedek_1; |
DELETE ile kayıtları sildiğimizde otomatik artan değer olarak belirlenen ogrenci_no alanının sıfırlanmayacağını ve bir önceki tablonun değerinden devam edeceğini söylemiştik. Bunu kontrol etmek için 1 adet kayıt ekleyip tablo içeriğini listeleyelim.
1 2 3 4 5 6 | INSERT INTO ogrenci_yedek_1 (ogrenci_ad,ogrenci_soyad,sinif,dogum_tarihi,dogum_yeri,cinsiyet) VALUES ('Taha','KAZAN','10A','2002.12.04','İzmir','E'); SELECT * FROM ogrenci_yedek_1; |
TRUNCATE komutu tabloyu sıfırlamak için kullanılır. DELETE komutundan farklı olarak ID (Numara) alanlarını da sıfırlar.
Eğer TRUNCATE komutunu kullanmayacak olsaydık ve ID’lerin de sıfırlanmasını istiyor olsaydık önce DROP TABLE komutu ile ilgili tabloyu siler, daha sonra CREATE TABLE komutu ile tabloyu yeniden oluştururduk. TRUNCATE komutu DROP TABLE ve CREATE TABLE komutlarına gerek kalmadan tablomuzu sıfırlamamızı sağlar.
1 2 | TRUNCATE TABLE ogrenci_yedek_2; SELECT * FROM ogrenci_yedek_2; |
Öğrenci numaralarının sıfırlanıp sıfırlanmadığını kontrol etmek için yeni bir kayıt ekleyip tablomuzun içeriğini listeleyelim.
1 2 3 4 5 6 | INSERT INTO ogrenci_yedek_2 (ogrenci_ad,ogrenci_soyad,sinif,dogum_tarihi,dogum_yeri,cinsiyet) VALUES ('Taha','KAZAN','10A','2002.12.04','İzmir','E'); SELECT * FROM ogrenci_yedek_2; |