DML-komutu Güncelleme MySQL'in "Tuzakları"
Veritabanlarıyla çalışmak zorunda olan her programcı, DML-operatörleri ile karşılaştı (başına. İngilizce ile. - "veri işleme dili" gibi seçmek, Ekle, silmek ve güncelleştirme. MySQL ortamı ayrıca, yukarıdaki komutların tümünü cephaneliğinde kullanır.
Bu operatörler mantıksal olarakamaç - kayıtları seçin, yeni değerler ekleyin, mevcut verileri güncelleyin, tamamlayın veya belirtilen koşullara göre, veritabanındaki bilgileri silin. Teorik materyallerin öğretimi, her bir takımın çalışma prensibini ve sözdizimini ayrıntılı olarak açıklamaktadır, ancak kullanım sırasında pratikte ortaya çıkabilecek zorluklardan söz edilmemektedir. Bu materyal, bazılarının dikkate alınmasına adanacaktır.
Kısaca DML-operatörleri hakkında (Insert)
Daha fazla ilerlemeden önce, her bir fonksiyonun amacını daha ayrıntılı olarak tekrar hatırlamak gerekir. İki operatörle daha çok ilgileneceğiz: Ekle ve güncelleştirmeÇünkü, büyük miktarda veriyi işlerken ortaya çıkan temel zorluklar ortaya çıkıyor..
Komuta ile başla Ekle, ve sonra sorunsuzca hareket et Güncelleme. MySQL Sistem, diğer modern DBMS'ler gibi, operasyonu kullanır Ekle Mevcut yeni girişler eklemekveritabanı tabloları. Bu işlemin sözdizimi çok basit ve basittir. Değerlerin girileceği alanların sayımı, hedef - tablonun adı - ve girişlerin listesi doğrudan içerir. Her komut yürütme sırasında Ekle Veritabanı yeni değerler ile güncellenecektir.
Operatörü Güncelle
Bununla birlikte, pratikte sıklıkla ortaya çıkmaktadırDurum, bir veri kümesi için bir veya daha fazla özellik değerinin güncellenmesi gerektiğidir. Örnek olarak, işletmenin ana departmanların daha fazla yeniden adlandırılmasıyla bir reform yapıldığında durumdan söz edebiliriz. Bu durumda, her bölüm için değişiklik yapmak gerekir. Sadece isimler değişirse, o zaman sorun çok çabuk çözülür. Ancak, tüm üretimin her bir bileşeninin kodlanması, bir kural olarak, birincil anahtar olarak işlev görürse, bu da, bilgide ve her çalışan için değişiklikler gerektirir.
İlgili sorunu çözmek için uygulanabilir DML operatörü - Güncelleme. MySQL-Sunucu, çok sayıda kayıt ile çalışıyor,Güncelleme operatörünün yardımıyla, istenen sorguyu yürütün ve sorunu çözün. Ancak bazen güncelleme sırasında, bütünüyle anlaşılabilir ve zorlukları açıklamak zor değildir. Daha sonra tartışılacak olan kayıtların güncellenmesinin karmaşıklığı ile ilgilidir.
Teoride ne söylendiği hakkında ...
Yukarıda belirtildiği gibi Güncelleme komutuTablodaki mevcut kayıtları güncellemek için kullanılır. Ancak, uygulamada, veritabanı sunucularına erişen istemciler her zaman bilinmemektedir, tablolarda belirli bir veri kümesi bulunmaktadır. Sonraki güncellemeler için veri tabanındaki verilerin kullanılabilirliğinin doğrulanması, zaman maliyetlerine ve sunucu özelliklerinin boşa harcanmasına yol açar.
Bunun olmasını önlemek için DBMS'nin özel bir tasarımı var MySQL - Ekleme * GüncellemeEklemek veya güncellemekbirbirinden bağımsız. Yani, tabloda belirli bir durum için bir giriş olduğunda, bir güncelleme gerçekleşir. Söz konusu koşuldaki veriler bulunamazsa, MySQL sunucusu veri toplama isteğini gerçekleştirebilir.
Yinelenen veriler varsa verileri güncelle
Bunun önemli bir bileşeni Ekle-veritabanı yönetim sisteminde sorgu MySQL - "Yinelenen Anahtar Güncellemesinde" konsolları. Sorgunun tam sözdizimi şöyledir: "yinelenen anahtar güncellemesinde test_table (jobyer_id, name) değerlerine (1, "Abramov") girme last_modified = NOW ();".
Böyle bir istek için kullanılabilirörneğin, eylemlerini kayıt zamanın kavşak belirlemek zaman aralığını sayarak ve gecikmeleri tespit izledi tesisin girişinde. Amacıyla masayı sürekli güncellenmesi ile kayıtları tutmak için her çalışan için yeterli bir kaç kayıtları yapmamaya. Bunu yapmanıza izin veren yinelenen kontrolün tasarımıdır.
Aslında sorunlar hakkında ...
Kontrol noktasında çalışanların eylemlerini kayıt altına almak için yukarıdaki örneği göz önünde bulundurarak, kendini geliştirmeyi (oto_artımGenellikle birincil anahtarların değerlerini doldurmak için kullanılan alanlar (birincil_anahtar). Komutu kullanırken MySQL Güncellemesi ile inşaatta Ekle oto_artım, alanlar sürekli artmaktadır.
Benzer şekilde, her şey olduğundaYinelenenlerin tespit edilmesi durumunda yedek tasarım kullanılır. "Autoincremental" değeri gerekli olmadığında bile artar. Bu nedenle, veri tabanındaki eksik değerler veya taşma ile ilgili problemler vardır, bu da daha sonra veri tabanı yönetim sistemlerinin performansının bozulmasına yol açar.
Bir problemin ortaya çıkma olasılığı en yüksek
Sorun dikkate alınmalıdır ağÇok kullanıcılı sistemlerde (Internet siteleri, portallar, vb.), sistemde çok sayıda prosedür gerçekleştirildiğinde en yaygın olduğu için geliştiriciler Ekle ve MySQL'i güncelleyin.
PHP-Veritabanına yapılan çağrılar çok sık yapılır. Bu nedenle, maksimum değerin tanımlanan alanlara göre elde edilmesi auto_incrementhızlı bir şekilde ortaya çıkar ve karşılaşılan zorlukları analiz ederken, nedenleri hemen tespit etmek imkansızdır.
Bu nedenle, geliştiricilere yapının kullanımını dikkatli bir şekilde yaklaşmaları tavsiye edilir. yinelenen anahtarda takımda mysql güncellemesi. seç - veritabanı sunucusuna erişirken sorgularhatasız çalışacak, ancak veritabanına yeni kayıtlar eklemek, tatsız durumlarla doludur, bu da daha sonra ciddi sorunlara yol açar. Alternatif olarak, autoincremental alanların başlangıçta kayıtların kullanılabilirliğini kontrol etmesi ve ardından bunları güncellemesi önerilir.