PostgreSQL चयनित पंक्तियों से पंक्तियाँ हटाएँ

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

PostgreSQL DELETE कमांड टेबल से एक या अधिक पंक्तियों को हटाता है, और इसे WHERE क्लॉज़ के साथ उपयोग करने पर केवल वही रिकॉर्ड लक्षित होते हैं जो किसी शर्त से मेल खाते हैं, जबकि WHERE क्लॉज़ को छोड़ देने पर टेबल की सभी पंक्तियाँ साफ़ हो जाती हैं।

  • ???? सिंटेक्स: DELETE FROM table WHERE condition मिलान करने वाली पंक्तियों को हटा देता है, और RETURNING हटाए गए डेटा को प्रदर्शित कर सकता है।
  • 🎯 एक शर्त: एक ही WHERE क्लॉज़ केवल उन पंक्तियों को हटाता है जो एक ही परीक्षण को पूरा करती हैं।
  • दो शर्तें: दो परीक्षणों को AND विधि से जोड़ने पर डिलीट करने की प्रक्रिया सटीक पंक्तियों तक सीमित हो जाती है।
  • 🔗 EXISTS खंड: EXISTS फ़ंक्शन एक टेबल में मौजूद पंक्तियों को दूसरी टेबल में मौजूद मिलान वाले रिकॉर्ड के आधार पर हटाता है।
  • pgAdmin: वही डिलीट क्वेरी pgAdmin क्वेरी एडिटर के माध्यम से दृश्य रूप से चलाई जाती हैं।
  • 🤖 एआई सुरक्षा: एआई सहायक सही WHERE क्लॉज़ जोड़ते हैं और पूरी टेबल को डिलीट करने से पहले चेतावनी देते हैं।

PostgreSQL चयनित पंक्तियों को हटाएं

क्वेरी हटाएं PostgreSQL

RSI DELETE कथन in PostgreSQL इसका उपयोग किसी टेबल से एक या अधिक रिकॉर्ड हटाने के लिए किया जाता है। टेबल से केवल चयनित पंक्तियों को हटाने के लिए, PostgreSQL यह आपको DELETE स्टेटमेंट को WHERE क्लॉज़ के साथ संयोजित करने की अनुमति देता है; अन्यथा, यह टेबल के सभी रिकॉर्ड हटा देता है।

PostgreSQL डिलीट क्वेरी सिंटैक्स

DELETE स्टेटमेंट को नीचे दिए गए सिंटैक्स का उपयोग करके परिभाषित किया जा सकता है:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

पैरामीटर्स

निम्नलिखित पैरामीटर उपलब्ध हैं:

  • साथ-प्रश्नWITH क्लॉज़ आपको DELETE क्वेरी के अंदर नाम से एक या अधिक सबक्वेरी को संदर्भित करने की अनुमति देता है।
  • तालिका नाम: उस तालिका का नाम जिसमें से रिकॉर्ड हटाए जाने हैं।
  • उर्फ: लक्ष्य तालिका के नाम का विकल्प।
  • उपयोग-सूची: टेबल एक्सप्रेशन जो अन्य टेबल के कॉलम को WHERE क्लॉज़ में उपयोग करने की अनुमति देते हैं।
  • स्थितियाँ): वैकल्पिक। रिकॉर्ड हटाने के लिए इन शर्तों का पूरा होना आवश्यक है। यदि यह अनुभाग प्रदान नहीं किया जाता है, तो तालिका-नाम से संबंधित सभी रिकॉर्ड हटा दिए जाएंगे।
  • कर्सर-नाम: यह कर्सर WHERE CURRENT OF शर्त में उपयोग किया जाएगा। इस कर्सर द्वारा प्राप्त की गई अंतिम पंक्ति को हटा दिया जाएगा।
  • आउटपुट-अभिव्यक्ति: प्रत्येक पंक्ति को हटाने के बाद DELETE स्टेटमेंट द्वारा संसाधित और लौटाया जाने वाला एक्सप्रेशन।
  • आउटपुट-नाम: लौटाए गए कॉलम के लिए उपयोग किया जाने वाला नाम.

ध्यान दें कि चूंकि DELETE स्टेटमेंट पूरी पंक्ति को हटा देता है, इसलिए आपको कॉलम के नाम निर्दिष्ट करने की आवश्यकता नहीं है।

PostgreSQL एक शर्त के साथ क्वेरी हटाएं

DELETE स्टेटमेंट का उपयोग एक ही शर्त के साथ किया जा सकता है, जिसे WHERE क्लॉज़ का उपयोग करके सेट किया जाता है। मान लीजिए Price टेबल में निम्नलिखित डेटा है:

मूल्य:

PostgreSQL एक शर्त के साथ क्वेरी हटाएं

आइए 4 आईडी वाले रिकॉर्ड को हटा दें:

DELETE FROM Price
WHERE id = 4;

उपरोक्त कमांड उन रिकॉर्ड्स को हटाता है जिनमें आईडी 4 है। आइए पुष्टि करें कि विलोपन सफल रहा या नहीं:

PostgreSQL एक शर्त के साथ क्वेरी हटाएं

4 आईडी वाली पंक्ति हटा दी गई है।

दो शर्तों वाली क्वेरी हटाएं

RSI PostgreSQL DELETE स्टेटमेंट में दो शर्तें भी हो सकती हैं। इन दोनों शर्तों को AND ऑपरेटर का उपयोग करके जोड़ा जाना चाहिए। हम निम्नलिखित तालिका का उपयोग करेंगे:

मूल्य:

PostgreSQL दो शर्तों वाली क्वेरी हटाएं

नीचे दिए गए उदाहरण पर विचार करें:

DELETE FROM Price
WHERE id = 3
AND price = 300;

उपरोक्त कमांड में, हम उस पंक्ति को हटा रहे हैं जिसमें आईडी 3 है और कीमत 300 है। अब हम तालिका को क्वेरी कर सकते हैं:

SELECT * FROM Price;

यह निम्नलिखित लौटाता है:

PostgreSQL दो शर्तों वाली क्वेरी हटाएं

आईडी 3 और कीमत 300 वाला रिकार्ड हटा दिया गया।

PostgreSQL EXISTS शर्त का उपयोग करके डिलीट क्वेरी

उसके साथ मौजूद है यदि आवश्यक हो, तो आप DELETE प्रक्रिया को अधिक जटिल बना सकते हैं। कभी-कभी एक टेबल में मौजूद रिकॉर्ड को दूसरी टेबल में मौजूद रिकॉर्ड के आधार पर डिलीट करने की आवश्यकता हो सकती है।

डिलीट ऑपरेशन करते समय FROM क्लॉज़ एक से अधिक टेबल से रिकॉर्ड लिस्ट करने की अनुमति नहीं देता है, इसलिए EXISTS क्लॉज़ बहुत उपयोगी हो जाता है। हमारे पास निम्नलिखित दो टेबल हैं:

किताब:

PostgreSQL EXISTS शर्त का उपयोग करके डिलीट क्वेरी

मूल्य:

PostgreSQL EXISTS शर्त का उपयोग करके डिलीट क्वेरी

फिर हम निम्नलिखित क्वेरी चला सकते हैं:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

यह कमांड बुक टेबल से उन पंक्तियों को हटाता है जिनका प्राइस टेबल में मौजूद आईडी से मेल खाता हो और जिनकी कीमत 250 से कम हो।

पुस्तक तालिका अब इस प्रकार है:

PostgreSQL EXISTS शर्त का उपयोग करके डिलीट क्वेरी

1 आईडी वाला रिकार्ड हटा दिया गया।

किसी पंक्ति को कैसे हटाएं PostgreSQL pgAdmin का उपयोग करके

नीचे दिए गए चरणों का पालन करके, pgAdmin इंटरफ़ेस के माध्यम से भी इन्हीं डिलीट क्वेरी को विज़ुअली चलाया जा सकता है:

एक शर्त के साथ

चरण 1) अपने pgAdmin खाते में लॉग इन करें। pgAdmin खोलें और अपने क्रेडेंशियल का उपयोग करके अपने खाते में लॉग इन करें।

चरण 2) एक डेमो डेटाबेस बनाएं।

  1. बाईं ओर स्थित नेविगेशन बार से, डेटाबेस पर क्लिक करें।
  2. डेमो पर क्लिक करें.

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

चरण 3) क्वेरी संपादक में नीचे दी गई क्वेरी टाइप करें:

DELETE FROM Price
WHERE id = 4;

चरण 4) निष्पादित करें बटन पर क्लिक करें.

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

चरण 5) आइए जांच करें कि पंक्ति हटाई गई थी या नहीं:

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

दो शर्तों के साथ

चरण 1) अपने pgAdmin खाते में लॉगिन करें.

चरण 2)

  1. बाईं ओर स्थित नेविगेशन बार से, डेटाबेस पर क्लिक करें।
  2. डेमो पर क्लिक करें.

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

चरण 3) क्वेरी संपादक में क्वेरी टाइप करें:

DELETE FROM Price
WHERE id = 3
AND price = 300;

चरण 4) निष्पादित करें बटन पर क्लिक करें.

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

चरण 5) आइए जाँचें कि क्या हटाना सफल रहा:

पंक्ति हटाएं PostgreSQL pgAdmin का उपयोग करके

EXISTS शर्त का उपयोग करना

चरण 1) अपने pgAdmin खाते में लॉगिन करें.

चरण 2)

  1. बाईं ओर स्थित नेविगेशन बार से, डेटाबेस पर क्लिक करें।
  2. डेमो पर क्लिक करें.

pgAdmin में EXISTS शर्त का उपयोग करके पंक्ति हटाएं

चरण 3) क्वेरी संपादक में क्वेरी टाइप करें:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

चरण 4) निष्पादित करें बटन पर क्लिक करें.

pgAdmin में EXISTS शर्त का उपयोग करके पंक्ति हटाएं

चरण 5) आइए जाँचें कि क्या हटाना सफल रहा:

pgAdmin में EXISTS शर्त का उपयोग करके पंक्ति हटाएं

इस ट्यूटोरियल में प्रयुक्त डेटाबेस डाउनलोड करें

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

TRUNCATE कमांड हर पंक्ति को तुरंत हटा देता है और स्टोरेज को रीसेट कर देता है, लेकिन यह WHERE और प्रति-पंक्ति ट्रिगर्स को अनदेखा करता है। DELETE कमांड WHERE क्लॉज़ का उपयोग करके चयनित पंक्तियों को हटाता है, पंक्ति ट्रिगर्स को सक्रिय करता है, और इसे किसी ट्रांज़ैक्शन के भीतर रोलबैक किया जा सकता है।

एक USING क्लॉज़ जोड़ें: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. यह दूसरी टेबल को जोड़ता है और मेल खाने वाली पंक्तियों को हटा देता है, जिससे EXISTS के समान परिणाम मिलता है, लेकिन इसमें जॉइन-स्टाइल सिंटैक्स अधिक स्पष्ट है।

RETURNING उसी स्टेटमेंट में डिलीट की गई पंक्तियों के कॉलम को इको करता है। DELETE FROM Price WHERE id = 4 RETURNING * लिखें, और PostgreSQL हटाए गए डेटा को लौटाता है ताकि एप्लिकेशन परिवर्तन को लॉग कर सकें या उसकी पुष्टि कर सकें।

जी हां। DELETE कमांड को BEGIN के साथ ट्रांजैक्शन में रैप करें, फिर उसे वापस लेने के लिए ROLLBACK चलाएं या उसे बनाए रखने के लिए COMMIT चलाएं। जब तक आप COMMIT नहीं करते, हटाई गई पंक्तियों को पुनर्स्थापित किया जा सकता है, जिससे गलती से डिलीट होने से बचाव होता है।

छिपे हुए ctid कॉलम का उपयोग करके प्रत्येक समूह के लिए एक प्रतिलिपि रखें: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id। इससे डुप्लिकेट पंक्तियाँ हट जाएँगी और एक रिकॉर्ड बना रहेगा।

पहले उसी फ़िल्टर को SELECT के रूप में चलाएँ, या BEGIN के साथ एक ट्रांज़ैक्शन खोलें और प्रभावित पंक्तियों का निरीक्षण करने के लिए RETURNING का उपयोग करें। RevCOMMIT करने से पहले WHERE परिणाम देखने से इच्छित संख्या से अधिक पंक्तियों को हटाने से रोका जा सकता है।

एआई सहायक सरल अंग्रेजी नियमों को सही वेयर क्लॉज़ के साथ डिलीट करने के लिए अनुवाद करते हैं, क्रॉस-टेबल डिलीट के लिए EXISTS या USING का सुझाव देते हैं, और उन कथनों को चिह्नित करते हैं जिनमें ऐसी शर्त गायब होती है जो पूरी टेबल को साफ़ कर देगी।

जी हां। एक एआई कोपायलट प्रत्येक डिलीट ऑपरेशन की समीक्षा करता है, जब कोई व्हेयर क्लॉज़ मौजूद नहीं होता तो चेतावनी देता है, और किसी ट्रांज़ैक्शन या रिटर्निंग प्रीव्यू की सिफारिश करता है, जिससे गलती से पूरी टेबल डिलीट होने का जोखिम कम हो जाता है।

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