MySQL DELETE क्वेरी: टेबल से पंक्ति कैसे हटाएँ

⚡ स्मार्ट सारांश

MySQL DELETE क्वेरी टेबल से उन पंक्तियों को हटा देती है जिनकी अब आवश्यकता नहीं है और प्रभावित पंक्तियों की संख्या लौटाती है। यह संसाधन DELETE सिंटैक्स, WHERE फ़िल्टरिंग, IN फ़ंक्शन के साथ कई पंक्तियों को हटाने और TRUNCATE और DROP जैसे सुरक्षित विकल्पों की व्याख्या करता है।

  • मुख्य कथन: DELETE FROM `table_name` [WHERE condition] कमांड पूरी पंक्तियों को हटाता है और हटाई गई पंक्तियों की संख्या लौटाता है।
  • ⚠️ जहां छोड़ा गया है: WHERE क्लॉज़ को छोड़ देने से टेबल की सभी पंक्तियाँ डिलीट हो जाती हैं, इसलिए हमेशा निष्पादन से पहले फ़िल्टर करें।
  • 🎯 Targetविज्ञापन हटाना: WHERE `movie_id` = 18 एक रिकॉर्ड हटाता है, जबकि WHERE `movie_id` IN (20,21) एक ही कथन में कई रिकॉर्ड हटाता है।
  • 🔁 अपरिवर्तनीय क्रिया: बैकअप के बिना हटाए गए डेटा को पुनर्प्राप्त नहीं किया जा सकता है, इसलिए DELETE चलाने से पहले डेटाबेस का बैकअप लें।
  • 📊 पंक्ति-स्तरीय दायरा: DELETE कमांड केवल पूरी पंक्तियों को हटाता है; किसी एक कॉलम का मान हटाने के लिए UPDATE कमांड के साथ NULL का उपयोग करना आवश्यक है।
  • DELETE बनाम TRUNCATE बनाम DROP: DELETE फ़ंक्शन पंक्तियों को फ़िल्टर करता है, TRUNCATE फ़ंक्शन किसी टेबल को तुरंत खाली कर देता है, और DROP फ़ंक्शन टेबल की संरचना को ही हटा देता है।

डिलीट क्वेरी क्या है?

RSI MySQL हटाएँ DELETE स्टेटमेंट का उपयोग डेटाबेस टेबल से उन पंक्तियों को हटाने के लिए किया जाता है जिनकी अब आवश्यकता नहीं है। यह टेबल से पूरी पंक्ति को हटा देता है और हटाई गई पंक्तियों की संख्या लौटाता है। जब आपको अपने डेटाबेस से अस्थायी या अप्रचलित डेटा को साफ़ करने की आवश्यकता होती है, तो DELETE स्टेटमेंट बहुत उपयोगी होता है।

DELETE क्वेरी में MySQL यह एक ही बार में किसी टेबल से एक से अधिक पंक्तियाँ हटा सकता है। डेटाबेस टेबल से बड़ी संख्या में पंक्तियाँ हटाते समय यह बहुत उपयोगी साबित होता है।

एक बार डेटा डिलीट हो जाने के बाद उसे वापस नहीं लाया जा सकता। डेटा डिलीट करने से पहले हमेशा डेटाबेस का बैकअप बना लें, ताकि ज़रूरत पड़ने पर डेटाबेस को रीस्टोर करके बाद में उसकी समीक्षा की जा सके।

किसी पंक्ति को कैसे हटाएं MySQL

कथन का उद्देश्य स्पष्ट हो जाने के बाद, अगला चरण वाक्य संरचना है। किसी पंक्ति को हटाने के लिए MySQL, DELETE FROM कथन का उपयोग किया जाता है:

DELETE FROM `table_name` [WHERE condition];

यहाँ:

  • `table_name` से हटाएं कहता है MySQL सर्वर को निर्दिष्ट तालिका से पंक्तियों को हटाने के लिए कहा गया है।
  • [जहां हालत] यह वैकल्पिक है और इसका उपयोग एक फ़िल्टर लागू करने के लिए किया जाता है जो DELETE क्वेरी से प्रभावित पंक्तियों की संख्या को सीमित करता है।

अगर कहां कारण में उपयोग नहीं किया जाता है MySQL DELETE क्वेरी, फिर सब दी गई तालिका की पंक्तियों को हटा दिया जाएगा।

⚠️ चेतावनी: पहले फ़िल्टर को SELECT क्वेरी के रूप में चलाएँ। यदि यह ठीक वही पंक्तियाँ लौटाता है जिन्हें आप हटाना चाहते हैं, तो मिलान करने वाली DELETE क्वेरी सुरक्षित है। पूर्ण सिंटैक्स दस्तावेज़ में दिया गया है। MySQL DELETE स्टेटमेंट मैनुअल.

इसका उदाहरण MySQL क्वेरी हटाएँ

अगले भाग में एक छोटा डेटा सेट बनाया जाता है और फिर उसमें से डेटा हटा दिया जाता है।

चरण 1: नमूना डेटा डालें

इससे पहले कि हम SQL DELETE स्टेटमेंट के बारे में अधिक विस्तार से चर्चा करें, आइए काम करने के लिए मूवीज़ टेबल में कुछ नमूना डेटा डालें।

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

उपरोक्त स्क्रिप्ट को चलाने से मूवी टेबल में तीन (3) फिल्में जुड़ जाती हैं। आगे बढ़ने से पहले, आइए हमारी टेबल में मौजूद सभी फिल्मों की सूची बना लें।

SELECT * FROM `movies`;

उपरोक्त स्क्रिप्ट को चलाने पर हमें निम्नलिखित परिणाम प्राप्त होते हैं। नई डाली गई तीनों पंक्तियाँ हाइलाइट हो जाती हैं।

मूवी_आईडी शीर्षक निदेशक वर्ष_रिलीज़ श्रेणी_आईडी
1 कैरिबियन के समुद्री डाकू 4 रॉब मार्शल 2011 1
2 सारा मार्शल को भूलना निकोलस Stoller 2008 2
3 एक्स पुरुष नल 2008 नल
4 Code नाम ब्लैक एडगर जिम्ज़ 2010 नल
5 डैडीज लिटिल गर्ल्स नल 2007 8
6 स्वर्गदूत और राक्षस नल 2007 6
7 दा विंची Code नल 2007 6
9 Honey moonनेताओं जॉन शुल्त्ज़ 2005 8
16 67% दोषी नल 2012 नल
18 द ग्रेट डिक्टेटर चार्ली चैपलिन 1940 7
19 नमूना फिल्म गुमनाम नल 8
20 फिल्म ४ जॉन ब्राउन 1920 8

चरण 2: एक पंक्ति हटाएं

मान लीजिए कि Myflix वीडियो लाइब्रेरी अब "द ग्रेट डिक्टेटर" फिल्म किराए पर नहीं देना चाहती और इसे डेटाबेस से हटाना चाहती है। फिल्म आईडी 18 है, इसलिए नीचे दिया गया स्क्रिप्ट उस पंक्ति को हटा देता है।

DELETE FROM `movies` WHERE `movie_id` = 18;

उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र Myflix डेटाबेस के विरुद्ध की गई कार्रवाई से आईडी 18 वाली फिल्म को टेबल से हटा दिया जाता है।

चलिए अब फिल्मों की तालिका की वर्तमान स्थिति की जांच करते हैं।

SELECT * FROM `movies`;
मूवी_आईडी शीर्षक निदेशक वर्ष_रिलीज़ श्रेणी_आईडी
1 कैरिबियन के समुद्री डाकू 4 रॉब मार्शल 2011 1
2 सारा मार्शल को भूलना निकोलस Stoller 2008 2
3 एक्स पुरुष नल 2008 नल
4 Code नाम ब्लैक एडगर जिम्ज़ 2010 नल
5 डैडीज लिटिल गर्ल्स नल 2007 8
6 स्वर्गदूत और राक्षस नल 2007 6
7 दा विंची Code नल 2007 6
9 Honey moonनेताओं जॉन शुल्त्ज़ 2005 8
16 67% दोषी नल 2012 नल
19 नमूना फिल्म गुमनाम नल 8
20 फिल्म ४ जॉन ब्राउन 1920 8

नोट:

  • आईडी 18 वाली फिल्म अब क्वेरी परिणाम सेट में नहीं दिखाई देती है।
  • आप DELETE कमांड का उपयोग करके किसी टेबल से एक कॉलम नहीं हटा सकते। यह स्टेटमेंट पूरी पंक्ति को हटाता है। किसी एक फ़ील्ड को साफ़ करने के लिए, किसी अन्य तरीके का उपयोग करें। अपडेट क्वेरी जो कॉलम को NULL पर सेट करता है।

चरण 3: IN का उपयोग करके एकाधिक पंक्तियों को हटाएं

मान लीजिए हमारे पास उन फिल्मों की सूची है जिन्हें हम हटाना चाहते हैं। प्रत्येक पंक्ति के लिए अलग-अलग स्टेटमेंट चलाने के बजाय, हम WHERE क्लॉज़ को IN ऑपरेटर के साथ जोड़ सकते हैं।

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

उपरोक्त स्क्रिप्ट को चलाने से हमारी मूवी टेबल से आईडी 20 और 21 वाली फिल्में एक ही बार में डिलीट हो जाती हैं।

DELETE बनाम TRUNCATE बनाम DROP MySQL

डेटा हटाने का एकमात्र तरीका DELETE ही नहीं है। MySQLशुरुआती लोग अक्सर इसका इस्तेमाल तब करते हैं जब कोई तेज़ कमांड ज़्यादा उपयुक्त होता है, इसलिए नीचे दी गई तालिका में तीनों रिमूवल कमांड की तुलना की गई है।

Feature हटाएँ TRUNCATE ड्रॉप
कमांड प्रकार DML डीडीएल डीडीएल
कहां कारण समर्थित समर्थित नहीं समर्थित नहीं
क्या हटाया जाता है चयनित पंक्तियाँ सभी पंक्तियाँ पंक्तियों और तालिका संरचना
रोलबैक किसी लेनदेन के दौरान संभव संभव नहीं (अप्रत्यक्ष प्रतिबद्धता) संभव नहीं (अप्रत्यक्ष प्रतिबद्धता)
स्वयं वेतन वृद्धि काउंटर बरकरार है काउंटर प्रारंभिक मान पर रीसेट हो जाता है काउंटर को टेबल के साथ हटा दिया जाता है
बड़ी मेजों पर गति धीरे-धीरे (पंक्ति दर पंक्ति) बहुत तेज़ बहुत तेज़

फ़िल्टर की आवश्यकता होने पर या रोलबैक करने की क्षमता होने पर DELETE का उपयोग करें। ट्रिब्यूट टेबल जब आप किसी टेबल को जल्दी से खाली करना चाहते हैं और उसके ऑटो-इंक्रीमेंट काउंटर को रीसेट करना चाहते हैं, तो DROP कमांड का उपयोग करें। DROP कमांड का उपयोग केवल तभी करें जब टेबल की आवश्यकता न हो, क्योंकि यह डेटा के साथ-साथ उसकी परिभाषा को भी हटा देता है।

अक्सर पूछे जाने वाले प्रश्न

यह प्रक्रिया केवल चालू लेनदेन के भीतर ही लागू होती है। START TRANSACTION कमांड चलाएँ, DELETE कमांड निष्पादित करें, और फिर उसे पूर्ववत करने के लिए ROLLBACK करें। COMMIT के बाद या ऑटोकमिट सक्षम होने पर, पंक्तियाँ हट जाती हैं और केवल बैकअप ही उन्हें पुनर्स्थापित कर सकता है।

एक से अधिक तालिकाओं के लिए DELETE फ़ंक्शन का उपयोग करें शामिल होंFROM कीवर्ड से पहले दोनों तालिकाओं का नाम लिखें। वैकल्पिक रूप से, ON DELETE CASCADE के साथ फॉरेन की को परिभाषित करें ताकि पैरेंट रो डिलीट होने पर चाइल्ड रो अपने आप हट जाएं।

सुरक्षित अपडेट मोड डिफ़ॉल्ट रूप से सक्षम है MySQL कार्यक्षेत्रयह उन सभी DELETE आदेशों को अस्वीकार करता है जिनमें WHERE क्लॉज़ में कुंजी कॉलम का उपयोग नहीं किया गया है, जिससे गलती से पूरी टेबल डिलीट होने से बचा जा सकता है। इसे Edit > Preferences > SQL Editor में जाकर निष्क्रिय करें।

जी हां। एआई सहायक सामान्य अंग्रेजी अनुरोध को डिलीट सिंटेक्स में अनुवादित कर सकते हैं और वेयर क्लॉज़ की व्याख्या कर सकते हैं। हमेशा पहले जेनरेट किए गए फ़िल्टर की तुलना SELECT स्टेटमेंट से करें, क्योंकि एआई मॉडल आपके लाइव डेटा को नहीं देख सकता।

नहीं। स्टेटमेंट को AI द्वारा तैयार किया जाना चाहिए, लेकिन पहले इसे बैकअप या स्टेजिंग कॉपी पर स्वयं निष्पादित करें। WHERE क्लॉज़ के न होने से सभी पंक्तियाँ डिलीट हो जाती हैं, और एक बार ट्रांज़ैक्शन कमिट हो जाने के बाद कोई भी AI टूल इसे वापस नहीं कर सकता।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: