د مای ایس کیو ایل پوښتنه د نقل ډیټا څنګه اداره کوي؟د نقل شوي ډیټا بیان لرې کولو لپاره فلټر کړئ

مایپوښتنې څنګه نقل شوي ډاټا اداره کوي؟د نقل شوي ډیټا بیان لرې کولو لپاره فلټر کړئ

مای د نقل شوي معلوماتو اداره کول

کیدای شي په ځینو MySQL ډیټا جدولونو کې نقل شوي ریکارډونه وي. په ځینو مواردو کې، موږ د نقل شوي ډیټا شتون ته اجازه ورکوو، مګر ځینې وختونه موږ اړتیا لرو چې دا نقل شوي ډاټا حذف کړو.

په دې څپرکي کې به موږ د ډیټا جدول کې د نقل شوي ډیټا د مخنیوي څرنګوالي او د ډیټا جدول کې د نقل شوي ډیټا حذف کولو څرنګوالی معرفي کړو.


په جدولونو کې د نقل شوي معلوماتو مخه ونیسئ

تاسو کولی شئ ټاکل شوې ساحه د MySQL ډیټا جدول کې تنظیم کړئ لکه څنګه چې لومړنۍ کلیدي یا یونیک (بې ساري) شاخص د معلوماتو انفرادیت ډاډمن کولو لپاره.

راځئ چې یو مثال وګورو: په لاندې جدول کې هیڅ شاخصونه او لومړني کیلي شتون نلري، نو جدول ډیری نقل ریکارډونو ته اجازه ورکوي.

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

که تاسو غواړئ په جدول کې د لومړي_نوم او وروستی_نوم ځایونه تنظیم کړئ، ډاټا تکرار نشي، تاسو کولی شئ د ډیټا انفرادیت د ټاکلو لپاره د ډبل لومړني کیلي حالت تنظیم کړئ. که تاسو دوه ځله ابتدايي کیلي وټاکئ، د دې کیلي اصلي ارزښت NULL نشي کیدی، مګر کیدای شي په 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 کله چې ډاټا داخل کړئ، د ریکارډ انفرادیت ټاکل کیدو وروسته، که نقل شوي ډاټا داخل شي، هیڅ غلطی به بیرته راستانه نشي، مګر یوازې یو خبرداری به بیرته راستانه شي.او REPLACE 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;

د پورتنۍ پوښتنې بیان به د شخص_tbl جدول کې د نقل شوي ریکارډونو شمیر بیرته راولي.په عموم کې، د دوه اړخیزو ارزښتونو د پوښتنې لپاره، لاندې کار وکړئ:

  • معلومه کړئ چې کوم کالم احتمالي نقل شوي ارزښتونه لري.
  • د کالم غوره کولو لیست کې د دې کالمونو لیست کولو لپاره COUNT (*) وکاروئ.
  • کالمونه د GROUP BY بند کې لیست شوي.
  • د درلودلو بند د تکرارونو شمیر له 1 څخه ډیر ټاکي.

نقل شوي ډاټا فلټر کړئ

که تاسو د ځانګړو معلوماتو لوستلو ته اړتیا لرئ، تاسو کولی شئ د SELECT بیان کې د DISTINCT کلیدي کلمه وکاروئ ترڅو د نقل ډاټا فلټر کړئ.

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);

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) شریک کړ "مای ایس کیو ایل څنګه د نقل ډیټا پوښتنه او اداره کوي؟د فلټر کول او د نقل کولو بیانات" به تاسو سره مرسته وکړي.

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-499.html

د وروستي تازه معلوماتو ترلاسه کولو لپاره د چن ویلیانګ بلاګ ټیلیګرام چینل ته ښه راغلاست!

🔔 د چینل غوره لارښود کې د ارزښتناکه "ChatGPT مینځپانګې بازار موندنې AI وسیلې کارولو لارښود" ترلاسه کولو لپاره لومړی اوسئ! 🌟
📚 دا لارښود لوی ارزښت لري، 🌟دا یو نادر فرصت دی، له لاسه مه ورکوئ! ⏰⌛💨
که مو خوښه شوه لایک او شریک کړئ!
ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو د بریښنالیک آدرس به نشر نشي اړین ساحې کارول کیږي * لیبل

پورته ته سکرول