MySQL Insert تجاهل المفتاح المكرر

Mysql Insert Ignore Duplicate Key



غالبًا ما توجد بيانات متضاربة في الجداول أو مجموعات النتائج. يستغرق التصحيح أيضًا وقتًا طويلاً ، وغالبًا ما يلزم تجنب السجلات المتكررة. من الضروري تحديد السجلات المكررة وحذفها من أي من الجدولين. سيوضح هذا القسم كيفية تجنب ظهور البيانات المكررة داخل جدول وكيفية التخلص من السجلات المكررة الحالية. في هذا الدليل ، ستتعلم كيفية استخدام عبارة INSERT IGNORE لتجنب الخطأ.

بناء الجملة:

فيما يلي بناء الجملة لاستعلام INSERT IGNORE.







>>إدراج تجاهل في اسم_الجدول(col1 ، col2 ، col3)القيم(قائمة_قيمة)و(قائمة_قيمة)و(قائمة_قيمة)؛

إدراج IGNORE عبر Workbench:

افتح MySQL Workbench 8.0 من نظامك وقم بتوصيله بمثيل قاعدة البيانات.





في منطقة القيادة ، يجب عليك إنشاء جدول الموظف بأربعة أعمدة حيث يجب تحديد أحدهم على أنه فريد. جرب الاستعلام أدناه في منطقة استعلام الملاح لإنشاء هذا الجدول. حدد الاستعلام بالكامل وانقر فوق علامة الفلاش لتنفيذه.





>>إنشاء موظف الجدول(ID int PRIMARY KEY NOT NULL ، اسم varchar(خمسون)NOT NULL، Age Varchar(خمسون)راتب varchar(خمسون)، فريدة من نوعها(هوية شخصية))؛

عند الإنشاء ، يمكنك العثور على موظف الجدول داخل القائمة تحت خيار الجداول أسفل بيانات قاعدة البيانات.



في عرض الشبكة ، يمكنك إدخال السجلات دون كتابة أي استعلام. لذلك ، افتح عرض الشبكة لموظف الجدول وأضف بعض السجلات فيه كما هو موضح أدناه. لقد أدخلنا جميع السجلات الفريدة دون أي تكرارات. اضغط على زر 'تطبيق' لتطبيق التغييرات.

سيتم فتح نافذة جديدة تحتوي على الاستفسارات ذات الصلة بالسجلات التي أدخلناها أعلاه. يمكن أن تسمى هذه الشاشة شاشة المراجعة. إذا كنت تريد تغيير شيء ما ، يمكنك القيام به هنا. خلاف ذلك ، اضغط على زر تطبيق لتنفيذ الاستعلامات.

كما ترى ، تم تنفيذ الاستعلام بنجاح وتم حفظ السجلات في قاعدة البيانات وجدول الموظف الخاص بها. كان سيحدث خطأ إذا أضفنا أي قيمة مكررة في معرف العمود. اضغط على زر إنهاء.

كان هذا كل شيء عن عرض الشبكة. الآن ، سنقوم بإدخال السجلات عبر منطقة الاستعلام. في غضون ذلك ، قمنا بإدخال سجلات مكررة هذه المرة للتحقق من المخرجات. لذلك ، جربنا استعلام INSERT أدناه ، حيث لدينا قائمتين من القيم. كلتا قائمتي القيم لها نفس القيمة في العمود 'ID'. حدد الاستعلام واضغط على علامة الفلاش لتنفيذ الاستعلام.

لن يعمل الاستعلام بشكل صحيح ، وسوف ينتج خطأ بسبب القيم المكررة في الأمر INSERT كما هو معروض في الصورة.

جرب الآن نفس الاستعلام أعلاه باستخدام جملة INSERT IGNORE وقم بتنفيذه كما هو مقدم.

يمكنك أن ترى أنه لا يولد خطأ في منطقة الإخراج ، لكنه يعطي تحذيرًا بأن الأمر يحتوي على قيم مكررة.

قم بتحديث عرض الشبكة لموظف الجدول. عمل استعلام INSERT IGNORE بمقدار النصف. لقد أدرجت القائمة الأولى من القيم في الجدول ، ولكن تم تجاهل القائمة الثانية للقيم بسبب القيمة المكررة 13.

أدخل تجاهل عبر Command-Line Shell:

لفهم هذا المفهوم ، دعنا نفتح واجهة عميل سطر أوامر MySQL في نظامك. عند السؤال ، اكتب كلمة مرور MySQL لبدء العمل عليها.

حان الوقت الآن لإنشاء جدول. جرب الأمر أدناه للقيام بذلك. لقد أنشأنا جدولًا باسم 'وزير' بينما يحتوي أحد أعمدته على قيد فريد. من الواضح أن معرف العمود سيقبل فقط القيم الفريدة وليس القيم المكررة.

>>إنشاء بيانات الجدول(منتصف INT PRIMARY KEY UNIQUE NOT NULL ، اسم VARCHAR(أربعة خمسة)، مدينة فاركار(أربعة خمسة))؛

يعمل الاستعلام بشكل مناسب ، وتم إنشاء الجدول. لفهم جملة INSERT IGNORE ، عليك أولاً أن ترى عمل أمر INSERT البسيط. إذا كنت تستخدم الأمر INSERT لإدخال العديد من بيانات المعلومات إلى جدول ، فإن MySQL تعلق المعاملة وتقوم بإنشاء استثناء إذا حدث خطأ أثناء المعالجة. نتيجة لذلك ، لا يحتوي الجدول على أي صفوف مضافة إليه. دعنا ندخل السجل الأول في جدول الوزير باستخدام الاستعلام الموضح أدناه. سيعمل الاستعلام بنجاح لأن الجدول فارغ حاليًا ، ولا يوجد سجل للمقابلة معه.

نظرًا لأن معرّف العمود فريد من نوعه ، فعندما نجرب التعليمات أدناه على غلاف سطر الأوامر ، فسيؤدي ذلك إلى حدوث خطأ. هذا لأننا أضفنا القيمة 11 في الاستعلام السابق ، وبسبب المفتاح UNIQUE ، فإنه لا يسمح لنا بإضافة القيمة المكررة مرة أخرى.

ومن ثم ، عند التحقق من الجدول ، يمكننا أن نرى أن الجدول يحتوي على سجل واحد فقط مضاف بواسطة استعلام INSERT الأول.

>>تحديد*من data.minister ؛

على العكس من ذلك ، إذا كنت تستخدم جملة INSERT IGNORE ، فسيتم التغاضي عن صفوف البيانات غير الصحيحة التي تؤدي إلى حدوث الخطأ وستدخل فقط الصفوف الدقيقة. في الأمر أدناه ، استخدمنا الأمر INSERT IGNORE لتجنب إضافة قيم متكررة في الجدول والتغاضي عن الخطأ. كما ترى ، تحتوي القائمة الأولى للقيم على قيمة مكررة 11 كما في الاستعلام السابق. في حين أن القائمة الثانية من القيم فريدة من نوعها ، فإنها ستعرض سجلًا واحدًا تم إدراجه في الجدول ، وهي القائمة الثانية من القيم. تشير MySQL أيضًا إلى أنه تم إدراج سجل واحد فقط ، ويتم إنشاء تحذير واحد في الرسالة. قد تفترض بعد ذلك أنه إذا كنا نستخدم جملة INSERT IGNORE ، فإن MySQL تقدم تحذيرًا.

كما ترى من الإخراج أدناه ، لدينا سجلين فقط في هذا الجدول - القائمة الأولى من القيم الواردة في الاستعلام أعلاه ، والتي تم تجاهلها.

>>تحديد*من data.minister ؛

استنتاج:

لقد قمنا بجميع الأمثلة الضرورية لـ INSERT IGNORE على القيم المكررة عبر MySQL Workbench و MySQL Client-line client.