हटाएं (एसक्यूएल): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|SQL database query language statement}}
{{Short description|SQL database query language statement}}
{{redirect|DELETE|other uses|Delete (disambiguation){{!}}Delete}}
{{redirect|हटाएं|अन्य उपयोग|हटाएं (बहुविकल्पी){{!}}हटाएं}}
डेटाबेस स्ट्रक्चर्ड क्वेरी लैंग्वेज ([[एसक्यूएल]]) में, DELETE स्टेटमेंट [[तालिका (डेटाबेस)]] से एक या एक से अधिक रिकॉर्ड्स को हटा देता है। समुच्चय उपसमुच्चय को एक शर्त का उपयोग करके विलोपन के लिए परिभाषित किया जा सकता है, अन्यथा सभी रिकॉर्ड हटा दिए जाते हैं।<ref>{{cite web|url=https://www.w3schools.com/Sql/sql_delete.asp|title=SQL Delete Statement|publisher=w3schools.com}}</ref> कुछ डेटाबेस#डेटाबेस प्रबंधन प्रणाली (डीबीएमएस), जैसे [[MySQL]], समुच्चयDELETE कथन के साथ कई तालिकाओं से पंक्तियों को हटाने की अनुमति देता है (इसे कभी-कभी मल्टी-टेबल DELETE कहा जाता है)।
 
डेटाबेस संरचना क्वेरी भाषा ([[एसक्यूएल]]) में, हटाएं कथन [[तालिका (डेटाबेस)]] से एक या एक से अधिक रिकॉर्ड्स को हटा देता है। समुच्चय उपसमुच्चय को एक शर्त का उपयोग करके विलोपन के लिए परिभाषित किया जा सकता है, अन्यथा सभी रिकॉर्ड हटा दिए जाते हैं।<ref>{{cite web|url=https://www.w3schools.com/Sql/sql_delete.asp|title=SQL Delete Statement|publisher=w3schools.com}}</ref> कुछ डेटाबेस प्रबंधन प्रणाली (डीबीएमएस), जैसे [[MySQL|माईएसक्यूएल]], समुच्चयहटाएं कथन के साथ कई तालिकाओं से पंक्तियों को हटाने की अनुमति देता है (इसे कभी-कभी बहु-तालिका हटाएं कहा जाता है)।


== उदाहरण ==
== उदाहरण ==


तालिका पाई से [[पंक्ति (डेटाबेस)]] हटाएं जहां कॉलम (डेटाबेस) स्वाद लेमन मेरिंग्यू के बराबर है:<syntaxhighlight lang="d">
तालिका पाई से [[पंक्ति (डेटाबेस)]] हटाएं जहां स्तम्भ (डेटाबेस) स्वाद लेमन मेरिंग्यू के बराबर है:<syntaxhighlight lang="d">
DELETE FROM pies
DELETE FROM pies
  WHERE flavor='Lemon Meringue';
  WHERE flavor='Lemon Meringue';
Line 15: Line 16:
</syntaxhighlight>
</syntaxhighlight>


mytable से सभी पंक्तियां हटाएं:<syntaxhighlight lang="d">
मेरीतालिका से सभी पंक्तियां हटाएं:<syntaxhighlight lang="d">
DELETE FROM mytable;
DELETE FROM mytable;
</syntaxhighlight>mytable से पंक्तियाँ जहाँ स्थिति में सबक्वेरी का उपयोग करके हटाएं:<syntaxhighlight lang="d">
</syntaxhighlight>मेरीतालिका से पंक्तियाँ जहाँ स्थिति में उपप्रश्न का उपयोग करके हटाएं:<syntaxhighlight lang="d">
DELETE FROM mytable
DELETE FROM mytable
  WHERE id IN (
  WHERE id IN (
Line 24: Line 25:
       );
       );
</syntaxhighlight>
</syntaxhighlight>
मानों की सूची का उपयोग करके mytable से पंक्तियां हटाएं:<syntaxhighlight lang="d">
मानों की सूची का उपयोग करके मेरीतालिका से पंक्तियां हटाएं:<syntaxhighlight lang="d">
DELETE FROM mytable
DELETE FROM mytable
  WHERE id IN (
  WHERE id IN (
Line 34: Line 35:
== संबंधित तालिकाओं के साथ उदाहरण ==
== संबंधित तालिकाओं के साथ उदाहरण ==


मान लीजिए कि समुच्चयसाधारण डेटाबेस है जो लोगों और पतों को सूचीबद्ध करता है। समुच्चयविशेष पते पर एक से अधिक व्यक्ति रह सकते हैं और एक व्यक्ति एक से अधिक पते पर रह सकता है (यह अनेक-से-अनेक (डेटा मॉडल)|अनेक-से-अनेक संबंध का समुच्चयउदाहरण है)। निम्नलिखित डेटा के साथ डेटाबेस में केवल तीन टेबल, व्यक्ति, पता और पीए हैं:
मान लीजिए कि समुच्चयसाधारण डेटाबेस है जो लोगों और पतों को सूचीबद्ध करता है। समुच्चयविशेष पते पर एक से अधिक व्यक्ति रह सकते हैं और एक व्यक्ति एक से अधिक पते पर रह सकता है (यह अनेक-से-अनेक (डेटा मॉडल) संबंध का समुच्चयउदाहरण है)। निम्नलिखित डेटा के साथ डेटाबेस में केवल तीन तालिका, व्यक्ति, पता और पीए हैं:


{|
{|
Line 40: Line 41:
|
|
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|+person
|+व्यक्ति
!pid
!विभाजित
!name
!नाम
|-
|-
| 1  || Joe
| 1  || जो
|-
|-
| 2  || Bob
| 2  || बॉब
|-
|-
| 3  || Ann
| 3  || अन्न
|}
|}
|
|
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|+address
|+पता
!aid
!साधन
!description
!विवरण
|-
|-
| 100  || 2001 Main St.
| 100  || 2001 मुख्य सेंट.
|-
|-
| 200  || 35 Pico Blvd.
| 200  || 35 पिको ब्लाव्ड.
|}
|}
|
|
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|+pa
|+पीए
!pid
!विभाजित
!aid
!साधन
|-
|-
| 1  || 100
| 1  || 100
Line 75: Line 76:
|}
|}
|}
|}
पीए टेबल व्यक्ति और एड्रेस टेबल से संबंधित है, यह दर्शाता है कि जो, बॉब और ऐन सभी 2001 मेन स्ट्रीट पर रहते हैं, लेकिन जो पिको बुलेवार्ड पर भी निवास करता है।
पीए तालिका व्यक्ति और एड्रेस तालिका से संबंधित है, यह दर्शाता है कि जो, बॉब और ऐन सभी 2001 मेन स्ट्रीट पर रहते हैं, लेकिन जो पिको बुलेवार्ड पर भी निवास करता है।


डेटाबेस से जो को हटाने के लिए, दो विलोपन निष्पादित किए जाने चाहिए:<syntaxhighlight lang="d">
डेटाबेस से जो को हटाने के लिए, दो विलोपन निष्पादित किए जाने चाहिए:<syntaxhighlight lang="d">
Line 90: Line 91:


== विशेषताएं ==
== विशेषताएं ==
* यह समुच्चयडीएमएल (डेटा मैनीपुलेशन लैंग्वेज) कमांड है, इसलिए इस कमांड के लिए निम्नलिखित कमांड का उपयोग किया जाता है: COMMIT और ROLLBACK
* यह एक डीएमएल (डेटा मैनीपुलेशन भाषा) कमांड है इसलिए इस कमांड के लिए कमिट और रोलबैक के लिए निम्न कमांड का उपयोग किया जाता है
* तालिका से सभी या कुछ रिकॉर्ड हटा देता है, आप WHERE क्लॉज का उपयोग करके हटाए जाने वाले रिकॉर्ड को सीमित कर सकते हैं
* तालिका से सभी या कुछ रिकॉर्ड हटा देता है, आप जब क्लॉज का उपयोग करके हटाए जाने वाले रिकॉर्ड को सीमित कर सकते हैं
* तालिका में (टेबलस्पेस में) डेटा द्वारा कब्जा कर लिया गया स्थान खाली नहीं करता है
* तालिका में (तालिकास्पेस में) डेटा द्वारा कब्जा कर लिया गया स्थान खाली नहीं करता है
* तालिका को निर्दिष्ट SEQUENCE मान को रीसेट नहीं करता है
* तालिका को निर्दिष्ट अनुक्रम मान को रीसेट नहीं करता है
* DELETE, TRUNCATE की तुलना में बहुत धीमी गति से काम करता है
* हटाएं, संक्षिप्त की तुलना में बहुत धीमी गति से काम करता है
* आप ROLLBACK कमांड का उपयोग करके रिकॉर्ड हटाने की कार्रवाई को पूर्ववत कर सकते हैं
* आप रोलबैक कमांड का उपयोग करके रिकॉर्ड हटाने की कार्रवाई को पूर्ववत कर सकते हैं
* DELETE के लिए समुच्चयसाझा टेबल लॉक की आवश्यकता होती है
* हटाएं के लिए समुच्चयसाझा तालिका लॉक की आवश्यकता होती है
* आग लगा देता है
* आग लगा देता है
* DELETE का उपयोग डेटाबेस लिंक के मामले में किया जा सकता है
* हटाएं का उपयोग डेटाबेस लिंक के मामले में किया जा सकता है
* DELETE हटाए गए रिकॉर्ड की संख्या लौटाता है
* हटाएं हटाए गए रिकॉर्ड की संख्या लौटाता है
* लेन-देन लॉग - DELETE को रिकॉर्ड पढ़ने, बाधाओं की जांच करने, अपडेट ब्लॉक, अपडेट इंडेक्स और फिर से / पूर्ववत करने की आवश्यकता है। इस सब में समय लगता है, इसलिए TRUNCATE की तुलना में इसमें अधिक समय लगता है
* लेन-देन लॉग - हटाएं को रिकॉर्ड पढ़ने, बाधाओं की जांच करने, अद्यतनित समूह, अद्यतनित निर्देशिका और फिर से / पूर्ववत करने की आवश्यकता है। इस सब में समय लगता है, इसलिए संक्षिप्त की तुलना में इसमें अधिक समय लगता है
* निष्पादन के दौरान प्रदर्शन को कम करता है - तालिका में प्रत्येक रिकॉर्ड को हटाने के लिए बंद कर दिया गया है
* निष्पादन के दौरान प्रदर्शन को कम करता है - तालिका में प्रत्येक रिकॉर्ड को हटाने के लिए बंद कर दिया गया है
* DELETE TRUNCATE स्टेटमेंट की तुलना में अधिक ट्रांजैक्शन स्पेस का उपयोग करता है
* हटाएं संक्षिप्त कथन की तुलना में अधिक लेन देन स्पेस का उपयोग करता है
* DELETE का उपयोग अनुक्रमित दृश्यों के साथ किया जा सकता है
* हटाएं का उपयोग अनुक्रमित दृश्यों के साथ किया जा सकता है
* DELETE कम मात्रा में फिर से करें और बड़ी मात्रा में पूर्ववत करें
* हटाएं कम मात्रा में फिर से करें और बड़ी मात्रा में पूर्ववत करें
* DELETE ऑपरेशन अनुपयोगी इंडेक्स को फिर से प्रयोग करने योग्य नहीं बनाता है
* हटाएं ऑपरेशन अनुपयोगी निर्देशिका को फिर से प्रयोग करने योग्य नहीं बनाता है


== संबंधित आदेश ==
== संबंधित आदेश ==
तालिका से सभी पंक्तियों को हटाने में बहुत समय लग सकता है। कुछ [[डीबीएमएस]]{{Clarify|date=September 2009}} समुच्चय[[ट्रंकेट (एसक्यूएल)]] कमांड की पेशकश करें जो बहुत तेजी से काम करता है, क्योंकि यह केवल मेटाडेटा को बदलता है और आमतौर पर बाधाओं को लागू करने या ट्रिगर्स को सक्रिय करने में समय व्यतीत नहीं करता है।
तालिका से सभी पंक्तियों को हटाने में बहुत समय लग सकता है। कुछ [[डीबीएमएस]]{{Clarify|date=September 2009}} समुच्चय [[ट्रंकेट (एसक्यूएल)]] कमांड की प्रस्तुति करें जो बहुत तेजी से काम करता है, क्योंकि यह केवल मेटाडेटा को बदलता है और आमतौर पर बाधाओं को लागू करने या ट्रिगर्स को सक्रिय करने में समय व्यतीत नहीं करता है।


DELETE केवल पंक्तियों को हटाता है। किसी तालिका को पूरी तरह से हटाने के लिए [[ड्रॉप (एसक्यूएल)]] कमांड का उपयोग किया जा सकता है।
हटाएं केवल पंक्तियों को हटाता है। किसी तालिका को पूरी तरह से हटाने के लिए [[ड्रॉप (एसक्यूएल)]] कमांड का उपयोग किया जा सकता है।


==संदर्भ==
==संदर्भ==
Line 117: Line 118:


==बाहरी संबंध==
==बाहरी संबंध==
* [https://rozwoj-oprogramowania.pl/en/blog/databases/truncate-vs-delete.html Truncate vs Delete SQL Databases] gives examples of DELETE statements features
* [https://rozwoj-oprogramowania.pl/en/blog/databases/truncate-vs-delete.html संक्षिप्त vs हटाएं SQL Databases] gives examples of हटाएं statements features


{{SQL}}
{{SQL}}

Revision as of 13:03, 22 February 2023

डेटाबेस संरचना क्वेरी भाषा (एसक्यूएल) में, हटाएं कथन तालिका (डेटाबेस) से एक या एक से अधिक रिकॉर्ड्स को हटा देता है। समुच्चय उपसमुच्चय को एक शर्त का उपयोग करके विलोपन के लिए परिभाषित किया जा सकता है, अन्यथा सभी रिकॉर्ड हटा दिए जाते हैं।[1] कुछ डेटाबेस प्रबंधन प्रणाली (डीबीएमएस), जैसे माईएसक्यूएल, समुच्चयहटाएं कथन के साथ कई तालिकाओं से पंक्तियों को हटाने की अनुमति देता है (इसे कभी-कभी बहु-तालिका हटाएं कहा जाता है)।

उदाहरण

तालिका पाई से पंक्ति (डेटाबेस) हटाएं जहां स्तम्भ (डेटाबेस) स्वाद लेमन मेरिंग्यू के बराबर है:

DELETE FROM pies
 WHERE flavor='Lemon Meringue';

यदि ऊँचाई का मान 80 से कम है, तो पेड़ों में पंक्तियों को हटा दें।

DELETE FROM trees
 WHERE height < 80;

मेरीतालिका से सभी पंक्तियां हटाएं:

DELETE FROM mytable;

मेरीतालिका से पंक्तियाँ जहाँ स्थिति में उपप्रश्न का उपयोग करके हटाएं:

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

मानों की सूची का उपयोग करके मेरीतालिका से पंक्तियां हटाएं:

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

संबंधित तालिकाओं के साथ उदाहरण

मान लीजिए कि समुच्चयसाधारण डेटाबेस है जो लोगों और पतों को सूचीबद्ध करता है। समुच्चयविशेष पते पर एक से अधिक व्यक्ति रह सकते हैं और एक व्यक्ति एक से अधिक पते पर रह सकता है (यह अनेक-से-अनेक (डेटा मॉडल) संबंध का समुच्चयउदाहरण है)। निम्नलिखित डेटा के साथ डेटाबेस में केवल तीन तालिका, व्यक्ति, पता और पीए हैं:

व्यक्ति
विभाजित नाम
1 जो
2 बॉब
3 अन्न
पता
साधन विवरण
100 2001 मुख्य सेंट.
200 35 पिको ब्लाव्ड.
पीए
विभाजित साधन
1 100
2 100
3 100
1 200

पीए तालिका व्यक्ति और एड्रेस तालिका से संबंधित है, यह दर्शाता है कि जो, बॉब और ऐन सभी 2001 मेन स्ट्रीट पर रहते हैं, लेकिन जो पिको बुलेवार्ड पर भी निवास करता है।

डेटाबेस से जो को हटाने के लिए, दो विलोपन निष्पादित किए जाने चाहिए:

 DELETE FROM person WHERE pid=1;
 DELETE FROM pa WHERE pid=1;

संदर्भित सत्यनिष्ठा बनाए रखने के लिए, जो के रिकॉर्ड को व्यक्ति और पिता दोनों से हटा दिया जाना चाहिए। अलग-अलग संबंधपरक डेटाबेस प्रबंधन प्रणालियों में अखंडता को बनाए रखने के तरीके अलग-अलग हो सकते हैं।[citation needed] यह हो सकता है कि केवल तीन तालिकाओं से परे, डेटाबेस को समुच्चयट्रिगर के साथ भी स्थापित किया गया हो ताकि जब भी किसी व्यक्ति से कोई पंक्ति हटाई जाए तो किसी भी लिंक की गई पंक्तियों को पा से हटा दिया जाएगा। फिर पहला कथन:

DELETE FROM person WHERE pid=1;

स्वचालित रूप से दूसरे को ट्रिगर करेगा:

 DELETE FROM pa WHERE pid=1;

विशेषताएं

  • यह एक डीएमएल (डेटा मैनीपुलेशन भाषा) कमांड है इसलिए इस कमांड के लिए कमिट और रोलबैक के लिए निम्न कमांड का उपयोग किया जाता है
  • तालिका से सभी या कुछ रिकॉर्ड हटा देता है, आप जब क्लॉज का उपयोग करके हटाए जाने वाले रिकॉर्ड को सीमित कर सकते हैं
  • तालिका में (तालिकास्पेस में) डेटा द्वारा कब्जा कर लिया गया स्थान खाली नहीं करता है
  • तालिका को निर्दिष्ट अनुक्रम मान को रीसेट नहीं करता है
  • हटाएं, संक्षिप्त की तुलना में बहुत धीमी गति से काम करता है
  • आप रोलबैक कमांड का उपयोग करके रिकॉर्ड हटाने की कार्रवाई को पूर्ववत कर सकते हैं
  • हटाएं के लिए समुच्चयसाझा तालिका लॉक की आवश्यकता होती है
  • आग लगा देता है
  • हटाएं का उपयोग डेटाबेस लिंक के मामले में किया जा सकता है
  • हटाएं हटाए गए रिकॉर्ड की संख्या लौटाता है
  • लेन-देन लॉग - हटाएं को रिकॉर्ड पढ़ने, बाधाओं की जांच करने, अद्यतनित समूह, अद्यतनित निर्देशिका और फिर से / पूर्ववत करने की आवश्यकता है। इस सब में समय लगता है, इसलिए संक्षिप्त की तुलना में इसमें अधिक समय लगता है
  • निष्पादन के दौरान प्रदर्शन को कम करता है - तालिका में प्रत्येक रिकॉर्ड को हटाने के लिए बंद कर दिया गया है
  • हटाएं संक्षिप्त कथन की तुलना में अधिक लेन देन स्पेस का उपयोग करता है
  • हटाएं का उपयोग अनुक्रमित दृश्यों के साथ किया जा सकता है
  • हटाएं कम मात्रा में फिर से करें और बड़ी मात्रा में पूर्ववत करें
  • हटाएं ऑपरेशन अनुपयोगी निर्देशिका को फिर से प्रयोग करने योग्य नहीं बनाता है

संबंधित आदेश

तालिका से सभी पंक्तियों को हटाने में बहुत समय लग सकता है। कुछ डीबीएमएस[clarification needed] समुच्चय ट्रंकेट (एसक्यूएल) कमांड की प्रस्तुति करें जो बहुत तेजी से काम करता है, क्योंकि यह केवल मेटाडेटा को बदलता है और आमतौर पर बाधाओं को लागू करने या ट्रिगर्स को सक्रिय करने में समय व्यतीत नहीं करता है।

हटाएं केवल पंक्तियों को हटाता है। किसी तालिका को पूरी तरह से हटाने के लिए ड्रॉप (एसक्यूएल) कमांड का उपयोग किया जा सकता है।

संदर्भ

  1. "SQL Delete Statement". w3schools.com.


बाहरी संबंध