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.

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.
