MySQL DELETE Sorgusu: Tablodan Satır Nasıl Silinir?

⚡ Akıllı Özet

MySQL DELETE sorgusu, bir tablodan artık ihtiyaç duyulmayan satırları siler ve etkilenen satır sayısını döndürür. Bu kaynak, DELETE sözdizimini, WHERE filtrelemesini, IN ile çoklu satır silmeyi ve daha güvenli alternatifler olan TRUNCATE ve DROP'u açıklamaktadır.

  • 🗑️ Temel Açıklama: `DELETE FROM `table_name` [WHERE condition]` sorgusu, tüm satırları siler ve silinen satır sayısını döndürür.
  • ⚠️ Nerede atlandı: WHERE koşulunu atlamak tablodaki tüm satırları siler, bu nedenle çalıştırmadan önce her zaman filtreleme yapın.
  • 🎯 Targeted Kaldırma: `WHERE `movie_id` = 18` sorgusu tek bir kaydı silerken, `WHERE `movie_id` IN (20,21)` sorgusu tek bir ifadede birden fazla kaydı siler.
  • 🔁 Geri Dönülemez Eylem: Silinen veriler yedekleme olmadan kurtarılamaz, bu nedenle DELETE komutunu çalıştırmadan önce veritabanının yedeğini alın.
  • 📊 Satır Düzeyinde Kapsam: DELETE işlemi yalnızca tüm satırları siler; tek bir sütun değerini silmek için UPDATE işlemi ve NULL parametresi gereklidir.
  • 🇧🇷 DELETE, TRUNCATE ve DROP karşılaştırması: DELETE komutu satırları filtreler, TRUNCATE komutu tabloyu anında boşaltır ve DROP komutu tablonun yapısını tamamen siler.

DELETE Sorgusu nedir?

MKS MySQL SİL DELETE ifadesi, veritabanı tablosundan artık gerekli olmayan satırları kaldırmak için kullanılır. Tablodan tüm satırı siler ve silinen satır sayısını döndürür. DELETE ifadesi, veritabanınızdan geçici veya eski verileri temizlemeniz gerektiğinde kullanışlıdır.

DELETE sorgusu MySQL Tek bir işlemde bir tablodan birden fazla satırı silebilir. Bu, veritabanı tablosundan çok sayıda satırı silerken avantaj sağlar.

Bir satır silindikten sonra geri kurtarılamaz. Verileri silmeden önce daima veritabanının yedeğini alın, böylece gerekirse veritabanı daha sonra geri yüklenebilir ve incelenebilir.

Bir satırı nasıl silerim? MySQL

İfadenin amacı netleştikten sonraki adım sözdizimidir. Bir satırı silmek için... MySQL, DELETE FROM ifadesi kullanılır:

DELETE FROM `table_name` [WHERE condition];

BURAYA:

  • `table_name` tablosundan sil söyler MySQL Belirtilen tablodan satırları silmek için sunucuyu kullanın.
  • [NEREDE koşulu] İsteğe bağlıdır ve DELETE sorgusundan etkilenen satır sayısını sınırlayan bir filtre uygulamak için kullanılır.

Eğer WHERE yan tümcesi içinde kullanılmaz MySQL DELETE sorgusu, ardından herşey Belirtilen tablodaki satırlar silinecektir.

⚠️Uyarı: Filtreyi önce SELECT sorgusu olarak çalıştırın. Tam olarak silmek istediğiniz satırları döndürürse, eşleşen DELETE sorgusu güvenlidir. Tam sözdizimi belgelenmiştir. MySQL SİL Bildirimi kılavuzu.

Örnek MySQL Sorguyu Sil

Sonraki bölümde küçük bir veri kümesi oluşturulacak ve ardından bu kümeden veriler silinecektir.

Adım 1: Örnek Verileri Ekleyin

SQL DELETE ifadesi hakkında daha detaylı bir tartışmaya girmeden önce, üzerinde çalışabileceğimiz bazı örnek verileri filmler tablosuna ekleyelim.

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Yukarıdaki komut dosyasını çalıştırmak, filmler tablosuna üç (3) film ekler. Devam etmeden önce, tablomuzdaki tüm filmleri listeleyelim.

SELECT * FROM `movies`;

Yukarıdaki komut dosyasını çalıştırdığımızda aşağıdaki sonuçları elde ederiz. Yeni eklenen üç satır vurgulanmıştır.

film_id başlık yönetmen yıl_released kimlik kategorisi
1 Karayip Korsanları 4 Rob Marshall 2011 1
2 Sarah Marshal'ı unutmak nicholas stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code İsim Siyah Edgar Jimz 2010 NULL
5 Babamın Küçük Kızları NULL 2007 8
6 melekler ve seytanlar NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 %67 Suçlu NULL 2012 NULL
18 Büyük Diktatör Charlie Chaplin 1940 7
19 örnek film Anonim NULL 8
20 film 3 John Brown 1920 8

Adım 2: Tek Bir Satırı Sil

Diyelim ki Myflix video kütüphanesi artık "Büyük Diktatör" filmini kiralamak istemiyor ve veritabanından kaldırılmasını istiyor. Filmin kimlik numarası 18 olduğundan, aşağıdaki komut dosyası bu satırı siler.

DELETE FROM `movies` WHERE `movie_id` = 18;

Yukarıdaki betiğin çalıştırılması MySQL çalışma tezgahı Myflix veritabanına karşı yapılan sorgulama, 18 numaralı kimlik numarasına sahip filmi tablodan siler.

Şimdi de filmler tablosunun mevcut durumunu kontrol edelim.

SELECT * FROM `movies`;
film_id başlık yönetmen yıl_released kimlik kategorisi
1 Karayip Korsanları 4 Rob Marshall 2011 1
2 Sarah Marshal'ı unutmak nicholas stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code İsim Siyah Edgar Jimz 2010 NULL
5 Babamın Küçük Kızları NULL 2007 8
6 melekler ve seytanlar NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 %67 Suçlu NULL 2012 NULL
19 örnek film Anonim NULL 8
20 film 3 John Brown 1920 8

NOT:

  • Kimlik numarası 18 olan film artık sorgu sonuç kümesinde gösterilmiyor.
  • DELETE komutuyla bir tablodan tek bir sütunu silemezsiniz. Bu komut tüm bir satırı siler. Tek bir alanı temizlemek için, aşağıdaki yöntemi kullanın: GÜNCELLEME sorgusu Bu, sütunu NULL olarak ayarlar.

3. Adım: IN Operatörüyle Birden Çok Satırı Silme

Diyelim ki silmek istediğimiz filmlerin bir listesi var. Her satır için ayrı bir sorgu çalıştırmak yerine, WHERE koşulunu IN operatörüyle birleştirebiliriz.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Yukarıdaki komut dosyasını çalıştırmak, film tablomuzdaki 20 ve 21 numaralı kimlik numaralı filmleri tek seferde siler.

DELETE, TRUNCATE ve DROP işlemleri arasında geçiş yapmak. MySQL

Verileri silmenin tek yolu DELETE işlemi değildir. MySQLYeni başlayanlar genellikle daha hızlı bir komutun daha uygun olacağı durumlarda bu komutu tercih ederler; bu nedenle aşağıdaki tabloda üç kaldırma komutu karşılaştırılmıştır.

Özellik SİL KIRMIZI DAMLA
Komut türü DML DDL DDL
WHERE yan tümcesi destekli Desteklenmez Desteklenmez
Neler kaldırılıyor? Seçilen satırlar Tüm satırlar Satırlar ve tablo yapısı
Rollback Bir işlem içinde mümkün Mümkün değil (örtülü taahhüt) Mümkün değil (örtülü taahhüt)
OTOMATİK ARTIŞ Sayaç muhafaza ediliyor. Sayaç başlangıç ​​değerine sıfırlanır. Tezgah, masa ile birlikte kaldırılıyor.
Büyük masalarda hız Yavaş (satır satır) Çok hızlı Çok hızlı

Filtreye veya geri alma özelliğine ihtiyacınız olduğunda DELETE komutunu kullanın. KESME TABLOSU Bir tabloyu hızlıca boşaltmak ve AUTO_INCREMENT sayacını sıfırlamak istediğinizde DROP komutunu kullanın. DROP komutu yalnızca tablonun kendisine artık ihtiyaç duyulmadığında kullanılmalıdır, çünkü verilerle birlikte tanımı da siler.

SSS

Yalnızca açık bir işlem içindeyken. START TRANSACTION komutunu çalıştırın, DELETE işlemini gerçekleştirin, ardından ROLLBACK ile işlemi geri alın. COMMIT işleminden sonra veya otomatik commit etkinleştirildiğinde, satırlar kaybolur ve yalnızca yedekleme dosyası bunları geri yükleyebilir.

Çoklu tablo silme işlemini şu şekilde kullanın: JOINFROM anahtar kelimesinden önce her iki tabloyu da adlandırın. Alternatif olarak, yabancı anahtarı ON DELETE CASCADE ile tanımlayarak, üst satır silindiğinde alt satırların otomatik olarak kaldırılmasını sağlayabilirsiniz.

Güvenli Güncelleme Modu varsayılan olarak etkinleştirilmiştir. MySQL TezgâhBu özellik, WHERE koşulunda anahtar sütun kullanmayan tüm DELETE isteklerini reddederek, yanlışlıkla tüm tablonun silinmesini önler. Bu özelliği Düzenle > Tercihler > SQL Düzenleyici bölümünden devre dışı bırakabilirsiniz.

Evet. Yapay zekâ asistanları, sade İngilizce bir isteği DELETE sözdizimine çevirir ve WHERE koşulunu açıklayabilir. Yapay zekâ modeli canlı verilerinizi göremediği için, oluşturulan filtreyi her zaman önce bir SELECT sorgusuyla karşılaştırın.

Hayır. İfadeyi yapay zeka taslağı hazırlasın, ancak önce yedek veya test kopyası üzerinde kendiniz çalıştırın. Eksik bir WHERE koşulu her satırı siler ve işlem onaylandıktan sonra hiçbir yapay zeka aracı bunu geri alamaz.

Bu yazıyı şu şekilde özetleyin: