SQL veritabanında drop, delete ve truncate arasındaki fark sıkça soru olarak karışnıza çıkmıştır.
Kısacası, DELETE, WHERE koşuluna bağlı olarak satırları tek tek kaldırır veya WHERE koşulu yoksa tüm satırları siler. TRUNCATE tüm satırları bir defada kaldırır ve DROP komutu bir tabloyu veya veritabanını veritabanından tamamen kaldırır.
Bazı durumlarda, tüm kayıtları tablodan kaldırmak için WHERE yan tümcesi veya TRUNCATE olmadan DELETE kullanmak için hangisini kullanmanız kafa karıştırıcı olabilir, bu yüzden hangisini kullanmak için en iyi seçenek aşağıdaki gibi size yardımcı olacaktır.
DELETE:
- Tablodaki satırları kaldırır. Satırları birer birer silin ve silinen her satır için işlem günlüğüne bir girdi kaydeder.
Silinen veriler geri alınabilir. - DML komutudur.
- DELETE deyimi bir satır kilidi kullanılarak yürütüldüğünde, tablodaki her satır silinmek üzere kilitlenir.
TRUNCATE:
- Tablodaki satırları kaldırır. Satırları birer birer silin ve silinen her satır için işlem günlüğüne bir girdi kaydeder.
- Silinen veriler geri alınabilir.
- DML komutudur.
- DELETE deyimi bir satır kilidi kullanılarak yürütüldüğünde, tablodaki her satır silinmek üzere kilitlenir….
DROP:
- SQL’de DROP komutu veritabanından bir tabloyu kaldırır.
- DDL komutudur.
İlgili Soru:
Soru: Tablodaki tüm satırları kaldırmak istiyorsak hangisi daha hızlıdır? DELETE mi? TRUNCATE mi?
Yanıt: TRUNCATE komutu, DELETE komutudan daha hızlıdır, DELETE komutu satırları silerken her satır için bir kilit yerleştirdiğinden daha yavaştır. TRUNCATE komutu satırları değil tabloyu kilitler ve tüm satırları kaldırır.
Soru: (DDL veya DML) TRUNCATE komutu türü nedir?
Cevap: DDL – Veri Tanımlama Dilidir.
DROP, TRUNCATE ve DELETE SQL Örnekleri
Aşağıdaki gibi tabloyu ve kayıtları oluşturun.
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE KURS( ID int Primary key, ISIM VARCHAR(50), SURE INT ) INSERT INTO KURS VALUES(1,'C++',10) INSERT INTO KURS VALUES(2,'JAVA',15) INSERT INTO KURS VALUES(3,'C#',10) INSERT INTO KURS VALUES(4,'PYTHON',20) |
WHERE yan tümcesiyle DELETE:
Sorguda WHERE yan tümcesi ile DELETE komutunu kullanırsak, varolan belirli kayıt (satır) tablodan silinir.
1 2 3 |
DELETE from KURS Where SURE = 15 |
WHERE cümlesi olmadan DELETE:
WHERE deyimi olmadan delete komutunu kullanırsak, tüm satırlar tablodan silinir.
1 2 3 |
DELETE from KURS |
SQL TRUNCATE Örneği:
TRUNCATE, COURSE tablosundaki tüm kayıtları silecektir.
1 2 3 |
TRUNCATE TABLE KURS; |
SQL DROP Örneği:
SQL DROP TABLE deyimi tüm tablo tanımını kaldıracak ya da tablo yapısını veritabanından ve dolayısıyla kaydı kaldıracaktır. Şimdi veritabanında KURS adlı bir tablo yok. İstersek, yeni tabloyu tekrar oluşturmamız gerekir.
1 2 3 |
DROP TABLE KURS; |
Aslında, DROP komutu bir tablo tanımını ve bu tablo için verileri, dizinleri, tetikleyicileri, kısıtlamaları ve izin özelliklerini kaldırır.
NOT: TRUNCATE ve DROP durumunda, TRUNCATE tablo yapısını kaldırmaz, ancak DROP tablo yapısını kaldırır.
Yorum Yap