كيف يتعامل استعلام MySQL مع البيانات المكررة؟تصفية لإزالة بيان البيانات المكرر

MySQLكيف تتعامل الاستعلامات مع البيانات المكررة؟تصفية لإزالة بيان البيانات المكرر

MySQL التعامل مع البيانات المكررة

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

في هذا الفصل ، سوف نقدم كيفية منع تكرار البيانات في جدول البيانات وكيفية حذف البيانات المكررة في جدول البيانات.


منع تكرار البيانات في الجداول

يمكنك تعيين الحقل المحدد في جدول بيانات MySQL على هيئة المفتاح الأساسي أو فريد (فريد) فهرس لضمان تفرد البيانات.

لنجرب مثالاً: لا توجد فهارس ومفاتيح أساسية في الجدول أدناه ، لذلك يسمح الجدول بسجلات مكررة متعددة.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

إذا كنت تريد تعيين الحقول الاسم_الأول والاسم_الأخير في الجدول ، فلا يمكن تكرار البيانات ، يمكنك تعيين وضع المفتاح الأساسي المزدوج لتعيين تفرد البيانات. إذا قمت بتعيين المفتاح الأساسي المزدوج ، القيمة الافتراضية لهذا المفتاح لا يمكن أن يكون NULL ، ولكن يمكن ضبطه على NOT NULL.كالآتي:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

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

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

يستخدم المثال التالي INSERT IGNORE INTO ، والذي يتم تنفيذه بدون أخطاء ودون إدخال بيانات مكررة في جدول البيانات:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

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

هناك طريقة أخرى لتعيين تفرد بياناتك وهي إضافة فهرس فريد مثل هذا:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

الإحصائيات تكرر البيانات

سنحسب أدناه عدد السجلات المكررة للاسم الأول والاسم الأخير في الجدول:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

سيعود بيان الاستعلام أعلاه عدد السجلات المكررة في جدول person_tbl.بشكل عام ، للاستعلام عن القيم المكررة ، قم بما يلي:

  • حدد العمود الذي يحتوي على قيم مكررة محتملة.
  • استخدم COUNT (*) في العمود حدد قائمة لسرد تلك الأعمدة.
  • الأعمدة المدرجة في عبارة GROUP BY.
  • تحدد جملة HAVING عدد مرات التكرار أكبر من 1.

تصفية البيانات المكررة

إذا كنت بحاجة إلى قراءة بيانات فريدة ، يمكنك استخدام الكلمة الأساسية DISTINCT في عبارة SELECT لتصفية البيانات المكررة.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

يمكنك أيضًا استخدام GROUP BY لقراءة بيانات فريدة من جدول:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

البيانات المكررة

إذا كنت تريد حذف البيانات المكررة في جدول البيانات ، يمكنك استخدام جملة SQL التالية:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

بالطبع ، يمكنك أيضًا إضافة INDEX (index) و PRIMAY KEY (المفتاح الأساسي) في جدول البيانات لحذف السجلات المكررة في الجدول.الطرق على النحو التالي:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ ) شارك "كيف تستعلم MySQL وتتعامل مع البيانات المكررة؟بيانات التصفية وإلغاء البيانات المكررة "ستساعدك.

مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-499.html

مرحبًا بك في قناة Telegram الخاصة بمدونة Chen Weiliang للحصول على آخر التحديثات!

🔔 كن أول من يحصل على "دليل استخدام أداة الذكاء الاصطناعي لتسويق محتوى ChatGPT" في الدليل العلوي للقناة! 🌟
📚 يحتوي هذا الدليل على قيمة كبيرة، 🌟هذه فرصة نادرة، لا تفوتها! ⏰⌛💨
شارك و اعجبك اذا اردت
مشاركتك وإعجاباتك هي دافعنا المستمر!

 

发表 评论

لن يتم نشر عنوان بريدك الإلكتروني. 必填 项 已 用 * 标注

انتقل إلى أعلى