Latest web development tutorials

الخلية يعالج البيانات المكررة

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

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


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

يمكنك تعيين الحقل المحدد في الجداول بيانات الخلية للمفتاح الأساسي (المفتاح الأساسي) أو فريد (فريد) مؤشر لضمان تفرد البيانات.

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

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

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

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 INTO تجاهل الفرق هو أنه مع INSERT INTO INSERT تجاهل تجاهل البيانات الموجودة بالفعل في قاعدة البيانات، إذا لم يكن لديك قاعدة بيانات البيانات، إدخال بيانات جديدة إذا كان هناك بيانات، ثم تخطي هذه البيانات. بحيث يمكنك الاحتفاظ بالبيانات موجود بالفعل في قاعدة البيانات، لتحقيق الغرض من البيانات المدرجة في هذه الفجوة.

المثال التالي يستخدم 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 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)
);

الاحصائيات مكررة البيانات

أدناه سوف نكرر الرقم القياسي لعدد الجداول في FIRST_NAME وLAST_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.
  • بصعوبات بند يحدد عدد من التكرار هو أكبر من 1.

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

إذا كنت بحاجة لقراءة البيانات فريدة من نوعها يمكن استخدام الكلمة واضحة في عبارة SELECT لتصفية البيانات المكررة.

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

يمكنك أيضا استخدام 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);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

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

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