हटाएं (एसक्यूएल)

From Vigyanwiki
Revision as of 15:49, 16 March 2023 by Manidh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

डेटाबेस संरचना क्वेरी भाषा (एसक्यूएल) में, हटाएं कथन तालिका (डेटाबेस) से एक या एक से अधिक रिकॉर्ड्स को हटा देता है। समुच्चय उपसमुच्चय को एक शर्त का उपयोग करके विलोपन के लिए परिभाषित किया जा सकता है, अन्यथा सभी रिकॉर्ड हटा दिए जाते हैं।[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.


बाहरी संबंध