10 Eylül 2010 Cuma

TRUNCATE vs. DELETE

Truncate ile Delete arasındaki farklardan bahsetmeden önce DML ve DDL cümlelerinden bahsedilmesi daha doğru geliyor bana,


DML açılımından da anlaşılacağı gibi, Data Manipulation Language , veriler üzerindeki yapılan manipülasyon scriptleri kapsamaktadır. (SQL Veri İşleme Dili)
Bu işlemlerin kalıcı olması için COMMIT komutu kullanılmaktadır. Geri almak için ise ROLLBACK yapılır.

Bunlar nelerdir?

insert , update , delete

-Data Definition Language(DDL) - Verilerin saklandığı yapıların (tabloların) tanımlandığı ve düzenlendiği komutları içerir.

DDL Komutlar: ( alıntı = http://www.mustafabodur.com/?tag=/sql)

* Create - Yeni bir Veritabanı(Database), Tablo(Table), İndeks(Index), Veri Tipi(Type), View(View), Stored Procedure-Saklı Yordam(Procedure), Fonksiyon(Function), Trigger-Tetikleyici(Trigger) vb. gibi oluşturabileceğimiz komuttur.
* Alter - Daha önce oluşturulmuş bir veritabanı nesnesinin(database objects) üzerinde değişiklik yapmamızı sağlayacak komuttur.
* Drop - Daha önce oluşturulmuş veritabanı nesnesini kaldırmak için kullanılan komuttur.




TRUNCATE vs. DELETE
Truncate ile Delete (Where koşulu olmayan) arasında benzerlik olmasına rağmen yapısal farklılıklar bulunmaktadır.

Trucate delete göre çok hızlı çalışır. Nedeni olarakta geri alma bilgisi üretilmediği içindir. (TRUNCATE -> DDL, DELETE -> DML)

Truncate işlemleri sırasında trucate edilen tablodaki trigerlar çalışmaz, fakat delete işlemi için yazılmış triggerlar var ise çalışır , delete işlemi esnasında.

Konuyla ilgili faydalı bir kayna http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

Hiç yorum yok: