دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۲
  • آبان

جلسه ۲۹ : مدیریت موارد تکراری در MySQL

  • دسته‌بندی‌ها :
جلسه ۲۹ : مدیریت موارد تکراری در MySQL
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. به طور کلی، جداول یا مجموعه نتایج بعضی اوقات حاوی داده های تکراری هستند. این در اغلب موارد مجاز است، اما گاهی لازم است که رکوردهای تکراری را متوقف کند. لازم است که رکوردهای تکراری را شناسایی کرده و آنها را از جدول حذف کنید. در این بخش مدیریت موارد تکراری در MySQL ، نحوه جلوگیری از وقوع رکوردهای تکراری در یک جدول و نحوه حذف رکوردهای تکراری موجود را توضیح می دهیم.

      مدیریت موارد تکراری در MySQL

      در ادامه ی این آموزش شما را با چگونگی مدیریت موارد تکراری در MySQL آشنا می کنیم.

      جلوگیری از تکراری بودن در یک جدول

      می توان یک کلید اصلی یا یک Index یکتا را در یک جدول با فیلدهای مناسب برای متوقف کردن رکوردهای دوگانه استفاده کرد.

      جدول زیر شامل index یا کلید اصلی نمی باشد، بنابراین اجازه ی درج داده های تکراری در first_name و last_name داده شده است:

      مثال : 

      برای جلوگیری از رکوردهای تکراری از یک کلید اصلی برای تعریف آن اضافه کنید.

      وقتی این کار را انجام می دهید، لازم است که ستون های NOT NULL را اعلام کنیم، زیرا PRIMARY KEY به مقادیر NULL اجازه نمی دهد:

      مثال : 

      وقتی جدولی شامل یک index یکتا می باشد افزودن مقادیر تکراری به آن index موجب بروز خطا می شود.

      برای جلوگیری از اعلام خطای موراد تکراری در index یکتا از دستور  INSERT IGNORE به جای دستور INSERT استفاده کنید.

      اگر رکوردی رکورد دیگری را کپی نمی کند پس MySQL آن را به طور معمولی قرار داده است.

      اگر رکوردی تکراری باشد کلمه ی کلیدی IGNORE به MySQL اعلام می کند که آن مقدار را بدون اعلام خطا نادیده بگیرد.

      مثال زیر هیچ خطایی برای درج موارد تکراری در فیلدهای یکتا اعلام نکرده و از درج موراد تکراری جلوگیری می شود:

      مثال : 

      همچنین از کلمه کلیدی REPLACE به جای INSERT استفاده کنید.

      در این حالت اگر مقدار جدید تکراری باشد، جایگزین مقدار قبلی خواهد شد:

      مثال : 

      دستور INSERT IGNORE اولین مجموعه ای از رکوردهای تکراری را حفظ کرده و باقی مانده را از بین می برد.

      دستور REPLACE آخرین مجموعه ی از تکراری ها را حفظ کرده و هر گونه اطلاعات قبلی را پاک می کند.

      راه های دیگر ایجاد فیلد یکتا استفاده از UNIQUE به جای PRIMARY KEY در یک جدول است:

      مثال : 

      شمارش و تشخیص موارد تکراری

      مثال زیر یک query است که رکوردهای تکراری ایجاد شده در فیلدهای first_name و last_name را شمارش می کند:

      مثال : 

      این query یک لیست از تمام رکوردهای تکراری در در جدول person_tbl بر می گرداند.

      عموما برای شناسایی مجموعه مقادیری که کپی شده اند، مراحل زیر را دنبال کنید:

      • مشخص کنید کدام ستون ها حاوی مقادیری هستند که ممکن است تکرار شوند.
      • لیست این ستون ها را در لیست انتخاب ستون همراه با (*) COUNT .
      • ستون ها را در بند GROUP BY نیز نمایش دهید.
      • یک بند HAVING اضافه کنید که ارزش های منحصر به فرد را از بین می برد.

      حذف تکراری از یک نتیجه پرس و جو

      می توانید از دستور DISTINCT در یک ساختار SELECT برای پیدا کردن رکوردهای یکتای قابل دسترس در یک جدول استفاده کنید:

      مثال : 

      یک جایگزین برای دستور DISTINCT این است که یک بند GROUP BY را اضافه کنید که ستون هایی را که انتخاب می کنید نام می گیرد.

      این برای از بین بردن تکراری ها و انتخاب ترکیبات یکتا از مقادیر مشخص ستون ها استفاده می شود :

      مثال : 

      حذف موراد تکراری با جایگزینی

      اگر رکوردهای تکراری در یک جدول دارید و می خواهید تمام رکوردهای تکراری از یک جدول حذف شود، روش زیر را دنبال کنید:

      مثال : 

      یک روش ساده برای از بین بردن رکوردهای تکراری از یک جدول، یک INDEX یا یک کلید اصلی برای آن جدول است.

      حتی اگر همچین جدولی موجود باشد می توانید با افزودن INDEX یکتا یا کلید اصلی موارد تکراری را حذف کنید:

      مثال : 

      کلام آخر

      در حالت عادی جداول ایجاد شده در دیتابیس موارد تکراری را می پذیرد، اما شما به راحتی با روش های گفته شده می توانید برای مدیریت موارد تکراری در MySQL و جلوگیری از درج آن در آینده اقدام کنید.

      QR:  جلسه ۲۹ : مدیریت موارد تکراری در MySQL
      به اشتراک بگذارید