DELETE Sorgusu nedir?
MySQL DELETE komutu, veritabanı tablolarından artık gerekli olmayan satırları silmek için kullanılır. Tablodan tüm satırı siler ve silinen satırların sayısını döndürür. Sil komutu, veritabanınızdan geçici veya eski verileri silmek için kullanışlıdır.
MySQL'deki Silme sorgusu, tek bir sorguda bir tablodan birden fazla satırı silebilir. Bu, bir veritabanı tablosundan çok sayıda satırı kaldırırken avantaj sağlar.
MySQL satırındaki bir Sil satırı silindikten sonra kurtarılamaz. Bu nedenle, veritabanından herhangi bir veriyi silmeden önce veritabanı yedeklemelerinin yapılması şiddetle tavsiye edilir. Bu, veritabanını geri yüklemenize ve gerektiğinde verileri daha sonra görüntülemenize izin verebilir.
MySQL'de bir satır nasıl silinir
MySQL'de bir satırı silmek için DELETE FROM ifadesi kullanılır:
DELETE FROM `table_name` [WHERE condition];
İŞTE
- SİL "tablo_adı" MySQL sunucusuna tablodan satırları kaldırmasını söyler…
- [WHERE koşulu] isteğe bağlıdır ve MySQL DELETE satır sorgusundan etkilenen satırların sayısını sınırlayan bir filtre koymak için kullanılır.
MySQL DELETE sorgusunda WHERE yan tümcesi kullanılmazsa, belirli bir tablodaki tüm satırlar silinecektir.
MySQL Silme Sorgusu Örneği
DELETE komutuyla ilgili daha fazla ayrıntıya girmeden önce, çalışmak için filmler tablosuna bazı örnek veriler ekleyelim.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 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. Dersimize daha fazla girmeden önce, tüm filmleri masamıza alalım. Aşağıda gösterilen komut dosyası bunu yapar.
SELECT * FROM `movies`;
Yukarıdaki betiği çalıştırmak bize aşağıdaki sonuçları verir.
movie_id | itle | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
Myflix video kütüphanesinin artık üyelerine "The Great Dictator" u kiralamak istemediğini ve veritabanından kaldırılmasını istediklerini varsayalım. Film kimliği 18, satırını filmler tablosundan silmek için aşağıda gösterilen komut dosyasını kullanabiliriz.
DELETE FROM `movies` WHERE `movie_id` = 18;
Yukarıdaki komut dosyasını MySQL WorkBench'te Myflix'e karşı yürütmek, 18 numaralı filmi veritabanı tablosundan siler.
Filmler tablosunun mevcut durumunu görelim.
SELECT * FROM `movies`;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
NOT:
- 18 kimliğine sahip film sorgu sonuç kümesinde döndürülmedi.
- bir tablo için tek bir sütunu silemezsiniz. Tüm bir satırı silebilirsiniz.
Diyelim ki silmek istediğimiz filmlerin bir listesi var. IN ile birlikte WHERE cümlesini kullanabiliriz.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Yukarıdaki komut dosyasının yürütülmesi, 20 ve 21 numaralı filmleri filmler tablomuzdan siler.
Özet
- Silme komutu, artık bir tablodan gerekli olmayan verileri kaldırmak için kullanılır.
- "WHERE yan tümcesi", DELETE sorgusundan etkilenen satırların sayısını sınırlamak için kullanılır.
- Veriler bir kez silindikten sonra kurtarılamaz, bu nedenle verileri silmeden önce kesinlikle yedekleme yapmanız önerilir.