Bırak ve Kes
Drop ve Truncate, bir veritabanından veri kayıtlarını kaldırmak istediğimiz Veritabanı Yönetim Sistemlerinde kullanılan iki SQL (Yapılandırılmış Sorgu Dili) ifadesidir. Hem Drop hem de Truncate deyimleri, bir tablodaki tüm verileri ve ilgili SQL deyimini kaldırır. Silme işlemi, Drop ve Truncate'den daha fazla depolama alanı kullandığından bu durumda etkili değildir.
Bir veritabanındaki bir tabloyu tüm verileriyle birlikte atmak istersek, SQL Drop deyimini kullanarak bunu kolayca gerçekleştirmemizi sağlar. Drop komutu bir DDL (Veri Tanımlama Dili) komutudur ve mevcut bir veritabanını, tabloyu, indeksi veya görünümü yok etmek için kullanılabilir. Bir tablodaki tüm bilgileri ve tablo yapısını veritabanından siler. Ayrıca, bir tablodaki tüm verilerden basitçe, ancak tablo olmadan kurtulmak isteyebiliriz ve böyle bir senaryoda SQL'de Truncate deyimini kullanabiliriz. Truncate aynı zamanda bir DDL komutudur ve bir tablodaki tüm satırları ortadan kaldırır ancak ileride kullanmak üzere tablo tanımını aynı şekilde korur.
Bırakma komutu
Daha önce bahsedildiği gibi, Drop komutu, tablo tanımını ve tüm verilerini, bütünlük kısıtlamalarını, dizinlerini, tetikleyicilerini ve söz konusu tabloda oluşturulan erişim ayrıcalıklarını kaldırır. Bu nedenle, mevcut nesneyi veritabanından tamamen düşürür ve komut yürütüldükten sonra diğer tablolarla olan ilişkiler de artık geçerli olmaz. Ayrıca tabloyla ilgili tüm bilgileri veri sözlüğünden kaldırır. Bir tabloda Drop deyimini kullanmak için tipik sözdizimi aşağıdadır.
DROP TABLO
Yukarıdaki Drop komutu örneğinde veritabanından kaldırmak istediğimiz tablo adını basitçe değiştirmeliyiz.
Drop deyiminin, zaten bir yabancı anahtar kısıtlaması tarafından başvurulan bir tabloyu silmek için kullanılamayacağını belirtmek önemlidir. Bu durumda, referans veren yabancı anahtar kısıtlaması veya o belirli tablo önce bırakılmalıdır. Ayrıca, Drop deyimi veritabanındaki sistem tablolarına uygulanamaz.
Drop komutu bir otomatik tamamlama ifadesi olduğundan, başlatıldıktan sonra işlem geri alınamaz ve hiçbir tetikleyici başlatılmaz. Bir tablo bırakıldığında, tabloya yapılan tüm referanslar geçerli olmayacaktır ve bu nedenle, tabloyu tekrar kullanmak istiyorsak, tüm bütünlük kısıtlamaları ve erişim ayrıcalıklarıyla yeniden oluşturulmalıdır. Diğer tablolarla olan tüm ilişkiler de yeniden konumlandırılmalıdır.
Kesme komutu
Truncate komutu bir DDL komutudur ve kullanıcı tarafından belirlenen herhangi bir 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ı, dizinleri ve kısıtlamaları ile tablo yapısı aynı kalır. Truncate, tablo verilerini depolamak için kullanılan veri sayfalarını serbest bırakarak tablodaki verileri ortadan kaldırır ve işlem günlüğünde yalnızca bu sayfa ayırma işlemleri tutulur. Bu nedenle, Sil gibi diğer ilgili SQL komutlarına kıyasla daha az işlem günlüğü kaynağı ve sistem kaynağı kullanır. Yani Truncate diğerlerinden biraz daha hızlı bir ifadedir. Aşağıda, Kes komutunun tipik sözdizimi verilmiştir.
TABLOYU KESTİR
Tüm verileri kaldırmak istediğimiz tablo adını yukarıdaki söz diziminde değiştirmeliyiz.
Truncate, yabancı anahtar kısıtlaması tarafından başvurulan bir tabloda kullanılamaz. Harekete geçmeden önce otomatik olarak bir taahhüt ve sonrasında başka bir taahhüt kullanır, bu nedenle işlemin geri alınması imkansızdır ve hiçbir tetikleyici tetiklenmez. Eğer tabloyu yeniden kullanmak istiyorsak sadece veritabanındaki mevcut tablo tanımına erişmemiz gerekiyor.
Drop ve Truncate arasındaki fark nedir?
Hem Drop hem de Truncate komutları DDL komutlarıdır ve ayrıca bu komutlar kullanılarak gerçekleştirilen işlemlerin geri alınamaması için otomatik tamamlama ifadeleridir.
Drop ve Truncate arasındaki temel fark, Drop komutunun yalnızca bir tablodaki tüm verileri değil, aynı zamanda tüm referanslarla birlikte tablo yapısını veritabanından kalıcı olarak kaldırması, Truncate komutunun ise yalnızca tümünü kaldırmasıdır. tablodaki satırları ve tablo yapısını ve referanslarını korur.
Bir tablo bırakılırsa, diğer tablolarla olan ilişkiler artık geçerli olmayacak ve bütünlük kısıtlamaları ve erişim ayrıcalıkları da kaldırılacaktır. Bu nedenle, tablonun yeniden kullanılması gerekiyorsa, ilişkiler, bütünlük kısıtlamaları ve ayrıca erişim ayrıcalıkları ile yeniden yapılandırılması gerekir. Ancak bir tablo kesilirse, tablo yapısı ve kısıtlamaları gelecekte kullanılmak üzere kalır ve bu nedenle, yeniden kullanım için yukarıdaki yeniden oluşturmaların hiçbiri gerekli değildir.
Bu komutlar uygulandığında bunları kullanırken dikkatli olmalıyız. Ayrıca, bu komutların doğası, nasıl çalıştıkları hakkında daha iyi bir anlayışa sahip olmamız ve ayrıca temel unsurların kaybolmasını önlemek için kullanmadan önce dikkatli bir planlama yapmamı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.