MySQL سوال ڊپليڪيٽ ڊيٽا کي ڪيئن سنڀاليندو آهي؟نقل ٿيل ڊيٽا بيان کي ختم ڪرڻ لاء فلٽر

هن MySQLسوالن کي ڪيئن سنڀاليندا نقل ٿيل ڊيٽا؟نقل ٿيل ڊيٽا بيان کي ختم ڪرڻ لاء فلٽر

هن MySQL نقل ٿيل ڊيٽا کي سنڀالڻ

ڪجھ MySQL ڊيٽا جدولن ۾ نقل رڪارڊ ٿي سگھي ٿو. ڪجھ ڪيسن ۾، اسان نقل ٿيل ڊيٽا جي وجود جي اجازت ڏين ٿا، پر ڪڏھن ڪڏھن اسان کي انھن نقلي ڊيٽا کي ختم ڪرڻ جي ضرورت آھي.

هن باب ۾، اسان متعارف ڪنداسين ته ڊيٽا ٽيبل ۾ نقل ٿيل ڊيٽا کي ڪيئن روڪيو وڃي ۽ ڊيٽا ٽيبل ۾ نقل ٿيل ڊيٽا کي ڪيئن ختم ڪجي.


جدولن ۾ نقل ٿيل ڊيٽا کي روڪيو

توھان مقرر ڪري سگھوٿا مخصوص فيلڊ کي MySQL ڊيٽا ٽيبل ۾ جيئن پرائمري ڪي يا منفرد (منفرد) انڊيڪس ڊيٽا جي انفراديت کي يقيني بڻائڻ لاء.

اچو ته ھڪڙو مثال ڏيون: ھيٺ ڏنل جدول ۾ ڪي به انڊيڪس ۽ پرائمري ڪيز نه آھن، تنھنڪري ٽيبل ڪيترن ئي نقلن جي رڪارڊ جي اجازت ڏئي ٿي.

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

جيڪڏھن توھان چاھيو ٿا فيلڊز first_name ۽ last_name ٽيبل ۾ سيٽ ڪريو، ڊيٽا کي ورجائي نه ٿو سگھجي، توھان سيٽ ڪري سگھو ٿا ڊبل پرائمري ڪيئي موڊ کي سيٽ ڪرڻ لاءِ ڊيٽا جي انفراديت کي. جيڪڏھن توھان سيٽ ڪريو ٿا ڊبل پرائمري ڪيچي، ان ڪيچي جي ڊفالٽ قيمت 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 ڊيٽا داخل ڪرڻ وقت، رڪارڊ جي انفراديت قائم ٿيڻ کان پوء، جيڪڏهن نقل ٿيل ڊيٽا داخل ڪئي وئي آهي، ڪابه غلطي واپس نه ڪئي ويندي، پر صرف هڪ ڊيڄاريندڙ واپس ڪيو ويندو.۽ 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)
);

شماريات نقل ڪيل ڊيٽا

هيٺ اسين جدول ۾ 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 شق ۾ درج ڪيل ڪالمن.
  • 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 (انڊيڪس) ۽ PRIMAY KEY (پرائمري ڪي) ٽيبل ۾ ڊبل رڪارڊ کي حذف ڪرڻ لاءِ.هيٺ ڏنل طريقا:

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

اميد چن ويلانگ بلاگ ( https://www.chenweiliang.com/ ) شيئر ڪيو ويو "ڪيئن ڪري ٿو MySQL سوال ۽ نقل ٿيل ڊيٽا کي سنڀاليندو؟فلٽرنگ ۽ ڊيڊپليڪيشن بيان" توهان جي مدد ڪندي.

هن آرٽيڪل جي لنڪ کي حصيداري ڪرڻ لاء ڀليڪار:https://www.chenweiliang.com/cwl-499.html

تازن تازه ڪاريون حاصل ڪرڻ لاءِ Chen Weiliang جي بلاگ جي ٽيليگرام چينل تي ڀليڪار!

🔔 چينل جي ٽاپ ڊاريڪٽري ۾ قيمتي "ChatGPT مواد مارڪيٽنگ AI اوزار استعمال ڪرڻ جي گائيڊ" حاصل ڪرڻ وارا پھريون بڻجي وڃو! 🌟
📚 هي گائيڊ وڏي قيمت تي مشتمل آهي، 🌟 هي هڪ نادر موقعو آهي، ان کي نه وڃايو! ⏰⌛💨
پسند اچي ته شيئر ڪريو ۽ پسند ڪريو!
توهان جي حصيداري ۽ پسند اسان جي مسلسل حوصلا آهن!

 

发表 评论

توهان جو اي ميل پتو شايع نه ڪيو ويندو. 必填 项 已 用 * ليبل

مٿي ڏانهن ڇڪيو