Wampserver 2.2 kullanıyorum. PhpMyAdmin'de bir tablonun tüm kayıtlarını silmek istediğimde (tümünü seç), tüm kayıtları değil yalnızca bir kaydı siliyor. Neden tüm kayıtları silmiyor?
SHIFT-DEL
Wampserver 2.2 kullanıyorum. PhpMyAdmin'de bir tablonun tüm kayıtlarını silmek istediğimde (tümünü seç), tüm kayıtları değil yalnızca bir kaydı siliyor. Neden tüm kayıtları silmiyor?
SHIFT-DEL
Yanıtlar:
2 seçeneğiniz var delete
ve truncate
:
delete from mytable
Bu, otomatik artımlı kimliği sıfırlamaz, tablonun tüm içeriğini siler, bu işlem çok yavaştır. Belirli kayıtları silmek isterseniz, sonuna bir where cümlesi ekleyin.
truncate myTable
Bu, tabloyu sıfırlayacaktır, yani tüm otomatik artan alanlar sıfırlanacaktır. Bu bir DDL ve çok hızlı. Üzerinden belirli bir kaydı silemezsiniz truncate
.
Sql sekmesine gidin ve aşağıdaki sorgudan birini çalıştırın:
delete from tableName;
Sil : tablonuzdaki tüm satırları siler. Sonraki ekleme, sonraki otomatik artış kimliğini alacaktır.
veya
truncate tableName;
Kes : Tablonuzdaki satırları da siler, ancak 1 ile yeni satırdan başlar.
Örnek içeren ayrıntılı bir blog: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
Bu sorguyu kullanın:
DELETE FROM tableName;
Not: Belirli bir kaydı silmek için, sorgudaki where cümlesi koşulunu da verebilirsiniz.
VEYA bu sorguyu da kullanabilirsiniz:
truncate tableName;
Ayrıca diğer masa ile herhangi bir ilişkinizin olmaması gerektiğini unutmayın. Tabloda herhangi bir yabancı anahtar kısıtlaması olacaksa, bu kayıtlar silinmeyecek ve hata verecektir.
'Truncate tableName', tanımlanmış anahtar kısıtlaması olan bir tabloda başarısız olur . Ayrıca tablo AUTO_INCREMENT
değerini yeniden indekslemeyecektir . Bunun yerine, tüm tablo girişlerini silin ve bu sql sözdizimini kullanarak indekslemeyi 1'e sıfırlayın:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
İlginç bir gerçek.
TRUNCATE'in her zaman daha iyi performans göstereceğinden emindim, ancak benim durumumda, yalnızca birkaç satırla doldurulmuş yaklaşık 30 tabloya sahip bir db için, yalnızca birkaç yüz milisaniyenin aksine tüm tabloları TRUNCATE yapmak yaklaşık 12 saniye sürdü satırları SİLMEK için. Otomatik artışı ayarlamak toplamda yaklaşık bir saniye ekler, ancak yine de çok daha iyi.
Bu yüzden ikisini de denemenizi öneririm, sizin durumunuz için hangisinin daha hızlı çalıştığını görün.
sorguyu yazın: 'Tablonuzun_adı'nı kısaltın;
Ya da aynısını sql sorgusu kullanarak yapabilirsiniz:
Yan Yapı boyunca mevcut olan SQL'e tıklayın
TRUNCATE tablename; //offers better performance, but used only when all entries need to be cleared
or
DELETE FROM tablename; //returns the number of rows deleted
Ayrıntılı belgeler için DELETE ve TRUNCATE'e bakın
DELETE FROM tableName