Bırak vs Kes
Bırakma ve Kesme, veri kayıtlarını bir veritabanından kaldırmak istediğimiz Veritabanı Yönetim Sistemlerinde kullanılan iki SQL (Yapısal Sorgu Dili) ifadesidir. Hem Bırak hem de Kes ifadeleri, bir tablodaki tüm verileri ve ilgili SQL ifadesini kaldırır. Silme işlemi, bu durumda Bırak ve Kes'den daha fazla depolama alanı kullandığından etkili değildir.
Bir veritabanındaki bir tabloyu tüm verileriyle tamamen atmak istiyorsak, SQL bunu Drop deyimini kullanarak kolayca gerçekleştirmemizi sağlar. Bırakma komutu bir DDL (Veri Tanımlama Dili) komutudur ve mevcut bir veritabanını, tabloyu, dizini veya görünümü yok etmek için kullanılabilir. Veritabanından tablo yapısının yanı sıra bir tablodaki tüm bilgileri siler. Ayrıca, bir tablodaki tüm verilerden basit, ancak tablo olmadan kurtulmak isteyebiliriz ve böyle bir senaryoda SQL'deki Truncate deyimini kullanabiliriz. Kesme, aynı zamanda bir DDL komutudur ve tablodaki tüm satırları ortadan kaldırır, ancak ileride kullanmak üzere tablo tanımını korur.
Bırakma komutu
Daha önce de belirtildiği gibi, Drop komutu tablo tanımını ve söz konusu 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. Bu nedenle, varolan nesneyi veritabanından tamamen bırakır ve diğer tablolarla ilişkiler de komutu yürüttükten sonra artık geçerli olmaz. Ayrıca tablo ile ilgili tüm bilgileri veri sözlüğünden kaldırır. Aşağıda, bir tablodaki Drop deyimini kullanmak için kullanılan tipik sözdizimi verilmiştir.
DÜŞME TABLOSU
Yukarıdaki Drop komutunun örneğinde veritabanından kaldırmak istediğimiz tablo adını değiştirmeniz yeterlidir.
Drop deyiminin, yabancı anahtar kısıtlaması tarafından zaten başvurulmuş bir tabloyu silmek için kullanılamayacağını belirtmek önemlidir. Bu durumda, atıfta bulunulan yabancı anahtar kısıtlaması veya söz konusu tablonun ilk önce bırakılması gerekir. Ayrıca, Drop deyimi veritabanındaki sistem tablolarına uygulanamaz.
Bırak komutu bir otomatik yürütme ifadesi olduğundan, bir kez başlatıldığında işlem geri alınamaz ve tetikleyiciler tetiklenmez. Bir tablo bırakıldığında, tabloya yapılan tüm başvurular geçerli olmaz 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şturulması gerekir. Diğer tablolarla olan tüm ilişkilerin de yeniden konumlandırılması gerekir.
Kesme komutu
Kesme komutu bir DDL komutudur ve kullanıcı tarafından belirtilen herhangi bir koşul olmadan 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ı olan tablo yapısı aynı kalır. Kes, tablo verilerini depolamak için kullanılan veri sayfalarını ayırarak tablodaki verileri ortadan kaldırır ve yalnızca bu sayfa serbest bırakmaları işlem günlüğünde 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 açıklamadır. Truncate komutu için tipik sözdizimi aşağıdadır.
BAGAJ TABLOSU
Verilerin tamamını kaldırmak istediğimiz tablo adını yukarıdaki sözdiziminde değiştirmeliyiz.
Kesme, yabancı anahtar kısıtı tarafından başvurulan bir tabloda kullanılamaz. İşlem yapmadan önce otomatik olarak bir taahhüt kullanır ve daha sonra başka bir taahhüt kullanır, böylece işlemin geri alınması imkansızdır ve tetikleyiciler tetiklenmez. Tabloyu yeniden kullanmak istiyorsak, sadece veritabanındaki mevcut tablo tanımına erişmemiz gerekir.
Drop ve Truncate arasındaki fark nedir?
Hem Bırak hem de Kes komutları DDL komutlarıdır ve ayrıca otomatik komut ifadeleridir, bu nedenle bu komutlar kullanılarak gerçekleştirilen işlemler geri alınamaz.
Drop ve Truncate arasındaki temel fark, Drop komutunun yalnızca tablodaki tüm verileri değil, aynı zamanda tablo yapısını tüm referanslarla veritabanından kalıcı olarak kaldırmasıdır. Truncate komutu ise tablodaki tüm satırları kaldırır ve tablo yapısını ve referanslarını korur.
Bir tablo kaldırı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ıyla yeniden yapılandırılması gerekir. Ancak bir tablo kesilirse, tablo yapısı ve kısıtlamaları ileride kullanılmak üzere kalır ve bu nedenle, yukarıdaki rekreasyonlardan herhangi biri yeniden kullanım için gerekli değildir.
Bu komutlar uygulandığında, bunları kullanırken dikkatli olmalıyız. Ayrıca, bu komutların doğasını, nasıl çalıştıklarını ve eksik temelleri önlemek için kullanmadan önce bazı dikkatli planlamaları daha iyi anlamalıyız. 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.