Damla ve Kesim Arasındaki Fark

Anonim

Drop vs Truncate

Bırak ve Kes, Veritabanı Yönetim Sistemlerinde kullanılan iki SQL (Yapısal Sorgu Dili) ifadeleridir, nerede bir veritabanından veri kayıtlarını kaldırmak istiyoruz. Drop ve Truncate ifadeleri tablodaki tüm verileri ve ilgili SQL deyimini kaldırır. Silme işlemi, bırakma ve kesme işleminden daha fazla depolama alanı kullandığından, bu durumda etkili değildir.

Eğer bir veritabanındaki bir tabloyu bütün verileri ile tamamen atmak istersek, SQL, bunu Drop ifadesi kullanarak kolayca gerçekleştirmemize izin verir. Bırakma komutu DDL (Veri Tanımlama Dili) komutudur ve mevcut bir veritabanını, tabloyu, dizini veya görünümü yok etmek için kullanılabilir. Bir tablodaki tüm bilgilerin yanı sıra tablo yapısını da veritabanından siler. Ayrıca, bir tablodaki tüm verilerin yalnızca tabloda bulunup bulunmamasını isteyebiliriz ve böyle bir senaryoda SQL'de Truncate deyimini kullanabilirsiniz. Kesme aynı zamanda bir DDL komutudur ve bir tablodaki tüm satırları yok eder, ancak gelecekte kullanılmak üzere tablo tanımını aynen korur.

Drop komutu

Daha önce de belirtildiği gibi, Drop komutu, tablo tanımını ve bu tabloda oluşturulan tüm verilerini, bütünlük kısıtlamalarını, dizinlerini, tetikleyicilerini ve erişim ayrıcalıklarını kaldırır. Böylece mevcut nesneyi veritabanından tamamen boşaltıyor ve komutu yürüttükten sonra diğer tablolara olan ilişkiler artık geçerli olmayacak. Ayrıca tablo ile ilgili tüm bilgileri veri sözlüğünden kaldırır. Aşağıda, bir tabloda Drop ifadesini kullanmak için kullanılan normal sözdizimi verilmiştir.

DROP TABLE

Yukarıdaki örnekte Drop komutunun veritabanından kaldırmak istediğimiz tablo adını değiştirmek zorunda kaldık.

Drop ifadesi, zaten bir yabancı anahtar kısıtlaması tarafından başvurulan bir tabloyu silmek için kullanılamayacağına dikkat çekmek önemlidir. Bu durumda, başvuran yabancı anahtar kısıtlamasının veya o masanın ilk önce düşürülmesi gerekir. Ayrıca, veritabanındaki sistem tablolarında Drop bildirimi uygulanamaz.

Drop komutu bir otomatik tamamlama deyimi olduğundan, bir kez ateşlenen işlem geri alınamaz ve hiçbir tetikleyici tetiklenmez. Bir tablo düştüğünde, tablonun tüm başvuruları geçerli olmayacak ve bu nedenle, tabloyu tekrar kullanmak istersek, tüm bütünlük kısıtlamaları ve erişim ayrıcalıklarıyla yeniden oluşturulması gerekir. Diğer masalara olan tüm ilişkilerin de tekrar bulunması gerekiyor.

Kesme komutu

Kesme komutu bir DDL komutudur ve herhangi bir kullanıcı belirtilmiş koşul olmadan bir tablodaki tüm satırları kaldırır ve tablo tarafından kullanılan alanı serbest bırakır, ancak sütunlar, dizinler ve kısıtlamalarla birlikte tablo yapısı aynı kalır.Truncate, tablo verilerini depolamak için kullanılan veri sayfalarını ayırarak verileri bir tablodan kaldırır ve yalnızca bu sayfa ayrılmaları işlem günlüğüne tutulur. Dolayısıyla Sil gibi diğer ilgili SQL komutlarına kıyasla daha az işlem günlüğü kaynağı ve sistem kaynağı kullanır. Bu yüzden Truncate diğerlerinden biraz daha hızlı ifadedir. Aşağıda, Truncate komutu için tipik bir sözdizimi verilmiştir.

TRUNCATE TABLE

Yukarıdaki sözdiziminde tüm veriyi kaldırmak istediğiniz tablo adını değiştirmeliyiz.

Truncate, yabancı anahtar kısıtlaması tarafından başvurulan bir tabloda kullanılamaz. İşlemden önce otomatik olarak bir taahhüt kullanır ve sonradan başka bir taahhütte bulunulur; böylece işlemin geri alınması olanaksız olur ve hiçbir tetikleyici tetiklenmez. Tablonun tekrar kullanılmasını istiyorsak, yalnızca veritabanındaki mevcut tablo tanımına erişmek zorundayız.

Drop ve Truncate arasındaki fark nedir?

Hem Bırak, hem de Kes komutları DDL komutları ve otomatik tamamlama bildirimleri olduğundan, bu komutları kullanarak yapılan işlemler geri alınamaz.

Drop ve Truncate arasındaki temel fark Drop komutunun yalnızca bir tablodaki tüm verileri kaldırması değil, aynı zamanda tablonun yapısını tüm referanslarla veritabanından kalıcı olarak kaldırması ve Truncate komutu yalnızca tüm satırları kaldırır bir tabloya dönüştürür ve tablo yapısını ve referanslarını korur.

Bir tablo düşülürse, diğer tablolara olan ilişkiler artık geçerli olmayacak ve bütünlük sınırlamaları ve erişim ayrıcalıkları da kaldırılacaktır. Dolayısıyla, tablo yeniden kullanılması gerekiyorsa ilişkiler, bütünlük kısıtlamaları ve erişim ayrıcalıklarıyla yeniden yapılandırılmalıdır. Ancak, bir tablo kesilirse, tablo yapısı ve kısıtlamaları gelecekte kullanılmak üzere kalır ve böylece yukarıdaki rekreasyonlardan herhangi biri tekrar kullanılması için gerekli değildir.

Bu komutlar uygulandığında, bunları kullanmak için ihtiyatlı olmalıyız. Ayrıca, bu komutların doğası, nasıl çalıştığı ve temel unsurların eksik olmasını önlemek için bunları kullanmadan önce biraz dikkatli planlamamız gerekir. Son olarak, bu komutların her ikisi de daha az kaynak tüketerek veritabanlarını hızlı ve kolay bir şekilde temizlemek için kullanılabilir.