MySQL Ekle Yinelenen Anahtarı Yoksay

Mysql Insert Ignore Duplicate Key



Tablolarda veya sonuç kümelerinde genellikle birbiriyle çelişen veriler vardır. Ayrıca düzeltilmesi zaman alıcıdır ve sıklıkla tekrarlanan kayıtlardan kaçınılması gerekir. Yinelenen kayıtları belirlemek ve bunları herhangi bir tablodan silmek gereklidir. Bu bölüm, bir tablo içinde yinelenen verilerin görünmesinin nasıl önleneceği ve mevcut yinelenen kayıtların nasıl ortadan kaldırılacağı hakkında ayrıntılı bilgi verecektir. Bu kılavuzda, hatayı önlemek için INSERT IGNORE yan tümcesini nasıl kullanacağınızı öğreneceksiniz.

Sözdizimi:

İşte INSERT IGNORE sorgusunun sözdizimi.







>>IGNORE INTO tablo_adı EKLE(sütun1, sütun2, sütun3)DEĞERLER(değer_listesi),(değer_listesi),(değer_listesi);

Workbench aracılığıyla IGNORE EKLE:

MySQL Workbench 8.0'ınızı sisteminizden açın ve veritabanı örneğine bağlayın.





Komut alanında, birinin EŞSİZ olarak belirtilmesi gereken dört sütunlu bir Çalışan tablosu oluşturmanız gerekir. Bu tabloyu oluşturmak için gezgin sorgu alanında aşağıdaki sorguyu deneyin. Tüm sorguyu seçin ve yürütmek için flaş işaretine tıklayın.





>>TABLO OLUŞTUR Çalışan(ID int BİRİNCİL ANAHTAR NULL DEĞİL, isim varchar(elli)NULL DEĞİL, Yaş Varchar(elli), Maaş varchar(elli), BENZERSİZ(İD));

Oluşturulduktan sonra, tablo çalışanını, veritabanı verilerinin altındaki Tablolar seçeneği altındaki listede bulabilirsiniz.



Izgara görünümünde herhangi bir sorgu yazmadan kayıtları girebilirsiniz. Bu nedenle, tablo çalışanının grid görünümünü açın ve aşağıda gösterildiği gibi içine bazı kayıtları ekleyin. Tüm benzersiz kayıtları herhangi bir kopya olmadan girdik. Değişiklikleri uygulamak için 'Uygula' düğmesine basın.

Yukarıda girdiğimiz kayıtlarla ilgili sorguların olduğu yeni bir pencere açılacaktır. Bu ekrana Gözden Geçirme ekranı denilebilir. Bir şeyi değiştirmek istiyorsanız, burada yapabilirsiniz. Aksi takdirde, sorguları yürütmek için Uygula düğmesine basın.

Gördüğünüz gibi, sorgu başarıyla yürütüldü ve kayıtlar veritabanına ve Çalışan tablosuna kaydedildi. Sütun kimliğine herhangi bir yinelenen değer eklemiş olsaydık, bu bir hata oluştururdu. Bitir düğmesine dokunun.

Bu tamamen ızgara görünümüyle ilgiliydi. Şimdi sorgu alanı aracılığıyla kayıtları ekleyeceğiz. Bu arada, çıktıyı kontrol etmek için bu sefer yinelenen kayıtları ekliyoruz. Bu nedenle, iki değer listemizin olduğu aşağıdaki INSERT sorgusunu denedik. Her iki değer listesi de 'ID' sütununda aynı değere sahiptir. Sorguyu seçin ve sorguyu yürütmek için flaş işaretine basın.

Sorgu düzgün çalışmayacak ve resimde gösterildiği gibi INSERT komutunda yinelenen değerler nedeniyle bir hata üretecektir.

Şimdi yukarıdaki sorguyu INSERT IGNORE yan tümcesiyle deneyin ve gösterildiği gibi çalıştırın.

Çıktı alanında bir hata oluşturmadığını ancak komutun mükerrer değerler içerdiğine dair bir uyarı verdiğini görebilirsiniz.

Çalışan tablosunun ızgara görünümünü yenileyin. INSERT IGNORE sorgusu yarı çalıştı. İlk değer listesini tabloya ekledi, ancak ikinci değer listesi, tekrarlanan 13 değeri nedeniyle yok sayıldı.

Komut Satırı Kabuğu aracılığıyla IGNORE EKLE:

Bu kavramı anlamak için sisteminizde MySQL komut satırı istemci kabuğunu açalım. Sorduğunuzda, üzerinde çalışmaya başlamak için MySQL şifrenizi yazın.

Şimdi bir tablo oluşturma zamanı. Bunu yapmak için aşağıdaki komutu deneyin. Sütunlarından biri EŞSİZ bir kısıtlamaya sahipken 'bakan' adlı bir tablo oluşturduk. Sütun kimliğinin, yinelenen değerleri değil, yalnızca benzersiz değerleri kabul edeceği açıktır.

>>TABLO OLUŞTUR data.minister(Mid INT PRIMARY KEY UNIQUE NULL DEĞİL, VARCHAR Adı(Dört beş), Şehir VARCHAR(Dört beş));

Sorgu uygun şekilde çalışıyor ve tablo oluşturuldu. INSERT IGNORE yan tümcesini anlamak için önce basit INSERT komutunun çalıştığını görmelisiniz. Bir tabloya birkaç bilgi verisi eklemek için INSERT komutunu kullanıyorsanız, MySQL işlemi askıya alır ve işlem boyunca bir hata olursa bir istisna oluşturur. Sonuç olarak, tabloya eklenmiş herhangi bir satır yoktur. Aşağıdaki sorguyu kullanarak ilk kaydı tabloya ekleyelim. Tablo şu anda boş olduğundan ve karşılık gelecek bir kayıt olmadığından sorgu başarıyla çalışacaktır.

Sütun kimliği EŞSİZ olduğundan, aşağıdaki komutu komut satırı kabuğunda denediğimizde bir hata üretecektir. Bunun nedeni, önceki sorguda 11 değerini eklemiş olmamız ve UNIQUE anahtarı nedeniyle tekrarlanan değeri tekrar eklememize izin vermemesidir.

Bu nedenle, tabloyu kontrol ettiğimizde, tablonun ilk INSERT sorgusu tarafından eklenen yalnızca 1 kaydı olduğunu görebiliriz.

>>SEÇME*data.minister'dan;

Tersine, INSERT IGNORE yan tümcesini kullanıyorsanız, hatayı tetikleyen yanlış veri satırları gözden kaçacak ve yalnızca doğru olanları girecektir. Aşağıdaki komutta, tabloya tekrarlanan değerler eklemekten kaçınmak ve hatayı gözden kaçırmak için INSERT IGNORE komutunu kullanıyoruz. Gördüğünüz gibi, ilk değerler listesi, önceki sorgudakiyle aynı 11 yinelenen bir değere sahiptir. İkinci değer listesi benzersiz olsa da, ikinci değerler listesi olan tabloya eklenen 1 kaydı gösterecektir. MySQL ayrıca yalnızca 1 kaydın eklendiğini ve mesajda 1 uyarı oluşturulduğunu belirtir. Daha sonra, INSERT IGNORE yan tümcesini kullanıyorsak, MySQL'in bir uyarı sağladığını varsayabilirsiniz.

Aşağıdaki çıktıdan da görebileceğiniz gibi, bu tabloda yalnızca iki kaydımız var - yukarıdaki sorguda verilen ve gözden kaçan ilk değerler listesi.

>>SEÇME*data.minister'dan;

Çözüm:

INSERT IGNORE'un gerekli tüm örneklerini MySQL Workbench ve MySQL komut satırı istemci kabuğu aracılığıyla yinelenen değerler üzerinde yaptık.