अनुशंसित, 2019

संपादक की पसंद

SQL में DELETE और TRUNCATE के बीच अंतर

DELETE और TRUNCATE कमांड एक संबंध से ट्यूपल्स को हटाने के लिए उपयोग करते हैं, लेकिन वे कई संदर्भों में भिन्न होते हैं। SQL में DELETE कमांड एक डेटा मैनिपुलेशन लैंग्वेज कमांड है, जबकि TRUNCATE कमांड एक डेटा डेफिनिशन लैंग्वेज कमांड है। हालाँकि, वह बिंदु जो हमें DELETE और TRUNCATE के बीच अंतर करने की अनुमति देता है वह यह है कि DELETE किसी संबंध से निर्दिष्ट tuples को निकालने में सक्षम है, जबकि, TRUNCATE आदेश किसी संबंध से संपूर्ण tuples को निकालता है।

हमें यहां नहीं रुकना चाहिए, DELETE और TRUNCATE के बीच कई अन्य अंतर हैं। नीचे दिखाए गए तुलना चार्ट की सहायता से उनसे चर्चा करते हैं।

तुलना चार्ट

कम्पासियन के लिए आधारDELETETRUNCATE
बुनियादीआप उस टपल को निर्दिष्ट कर सकते हैं जिसे आप हटाना चाहते हैं।यह एक संबंध से सभी tuples को हटा देता है।
भाषाDELETE एक डाटा मैनीपुलेशन लैंग्वेज कमांड है।TRUNCATE एक डेटा डेफिनिशन लैंग्वेज कमांड है।
कहा पेDELETE कमांड में जहां क्लॉज हो सकता है।TRUNCATE कमांड में क्लॉज नहीं है।
उत्प्रेरकDELETE आदेश तालिका पर लागू ट्रिगर को सक्रिय करता है और उन्हें आग लगाने का कारण बनता है।TRUNCATE आदेश आग को ट्रिगर सक्रिय नहीं करता है।
विलोपनDELETE कमांड ट्यूपल्स को एक-एक करके खत्म करती है।TRUNCATE संपूर्ण डेटा पृष्ठ को tuples से हटाएं।
तालाहटाने से पहले DELETE कमांड पंक्ति / ट्यूपल को लॉक करती है।तालिका डेटा हटाने से पहले TRUNCATE कमांड लॉक डेटा पृष्ठ।
गतिDELETE कमांड TRUNCATE की तुलना में धीमी गति से कार्य करता है।DELETE की तुलना में TRUNCATE तेज़ है।
लेन-देनहटाए गए प्रत्येक टपल के लिए DELETE रिकॉर्ड लेनदेन लॉग।प्रत्येक हटाए गए डेटा पृष्ठ के लिए TRUNCATE रिकॉर्ड लेनदेन लॉग।
पुनर्स्थापितDELETE कमांड को COMMIT या ROLLBACK द्वारा अनुसरण किया जा सकता है।TRUNCATE कमांड रोलबैक नहीं हो सकता।

DELETE की परिभाषा

DELETE एक डेटा मैनीपुलेशन लैंग्वेज (DML) कमांड है। DELETE कमांड का काम एक टेबल या एक रिलेशन से ट्यूपल्स को हटाना या हटाना है। DELETE का उपयोग करके, हम संपूर्ण ट्यूपल को समाप्त करने में सक्षम हैं, इसके सभी गुण मान एक संबंध से। DELETE किसी विशेष विशेषता के मूल्य को संबंध से अलग नहीं करता है।

आप उन टेबल को फ़िल्टर कर सकते हैं जिन्हें आप एक तालिका से हटाना चाहते हैं, जहां WHERE क्लॉज़ का उपयोग कर सकते हैं। यदि आप DELETE स्टेटमेंट में WHERE क्लॉज को निर्दिष्ट करते हैं, तो यह केवल वहीं क्लॉज कंडीशन को संतुष्ट करने वाले ट्यूपल्स को हटा देगा। लेकिन यदि आप DELETE स्टेटमेंट में WHERE क्लॉज को निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट रूप से यह एक संबंध से सभी ट्यूपल्स को हटा देता है या समाप्त कर देता है। DELETE स्टेटमेंट में क्लॉज में नेस्टेड -फ्रॉम-व्हाट स्टेटमेंट्स हो सकते हैं।

DELETE कमांड का सिंटैक्स निम्नानुसार है:

तालिका से नाम हटाएं जहां [ संघनित ];

DELETE कमांड एक बार में केवल एक ही रिलेशन या टेबल पर काम करती है। यदि आप अलग-अलग संबंधों से टपल को हटाना चाहते हैं, तो आपको प्रत्येक के लिए अलग-अलग DELETE कमांड रखना होगा। लेकिन एक संबंध से टपल को हटाने से डेटाबेस की संदर्भित अखंडता का उल्लंघन हो सकता है, जिसे ट्रिगर्स की मदद से हल किया जा सकता है। यदि DELETE कमांड रेफ़रेंशियल अखंडता का उल्लंघन करता है, तो सभी रेफ़रेंशियल ट्रिगर्स (यदि निर्दिष्ट किए गए) सक्रिय हो जाते हैं जो डिलीट किए गए ट्यूपल्स को संदर्भित करता है, तो अलग-अलग रिलेशन के ट्यूपल्स पर डिलीट एक्शन का प्रचार करता है।

DELETE कमांड पहले पंक्ति या टपल को हटाए जाने के लिए लॉक करती है और फिर एक-एक करके टपल को हटाती है। इसलिए, इसे और अधिक ताले और संसाधनों की आवश्यकता होती है जो इसे धीमा बनाते हैं। आप COMMIT का उपयोग करके DELETE विवरण द्वारा किए गए परिवर्तनों को स्थायी कर सकते हैं, या आप ROLLBACK का उपयोग करके डेटाबेस को रीसेट कर सकते हैं।

TRUNCATE की परिभाषा

TRUNCATE DELETE कमांड के समान है क्योंकि यह एक संबंध से ट्यूपल्स को हटाता है। अंतर यह है कि यह एक संबंध से पूरे tuples को हटा देता है। जैसे ही TRUNCATE कमांड निष्पादित की जाती है, टेबल से पूरा डेटा हटा दिया जाता है, प्रत्येक ट्यूपल के साथ यह सभी विशेषता मान तालिका से समाप्त हो जाते हैं। लेकिन तालिका की संरचना अभी भी डेटाबेस में मौजूद है। तो, आप फिर से तालिका में टुपल्स दर्ज कर सकते हैं। TRUNCATE एक डेटा डेफिनिशन लैंग्वेज कमांड है।

TRUNCATE कमांड का सिंटैक्स निम्नानुसार है:

TRUNCATE टेबल टेबल_नाम ;

DELETE की तरह, TRUNCATE तालिका डेटा पंक्ति-दर-पंक्ति पर काम नहीं करता है। इसके बजाय, यह उन डेटा पृष्ठों पर संचालित होता है जो तालिका डेटा संग्रहीत करते हैं। अब, जब TRUNCATE डेटा पृष्ठों को हटाता है तो उसे ट्यूपल्स के बजाय डेटा पृष्ठों पर लॉक को प्राप्त करना होता है। इसलिए, यह ताले और संसाधन की कम आवश्यकता के परिणामस्वरूप होता है जो DELETE की तुलना में TRUNCATE को अधिक तेज़ बनाता है।

TRUNCATE कमांड का निष्पादन किसी भी ट्रिगर को सक्रिय नहीं करता है क्योंकि यह डेटा पंक्ति-दर-पंक्ति संचालित नहीं करता है। किसी भी विदेशी कुंजी द्वारा तालिका संदर्भित किए जाने पर TRUNCATE को निष्पादित नहीं किया जा सकता है। एक बार TRUNCATE कमांड तालिका डेटा को हटा देती है, इसे कभी भी वापस नहीं लिया जा सकता है।

SQL में DELETE और TRUNCATE के बीच मुख्य अंतर

  1. DELETE और TRUNCATE के बीच मुख्य अंतर यह है कि DELETE का उपयोग करके आप किसी संबंध से निर्दिष्ट टपल को हटा सकते हैं। लेकिन TRUNCATE के उपयोग से संपूर्ण संबंध टूट जाएंगे।
  2. DELETE DML कमांड है, जबकि TRUNCATE DDL कमांड है।
  3. DELETE उस रिकॉर्ड / ट्यूपल्स को फ़िल्टर करने के लिए WHERE क्लॉज़ का उपयोग करता है जिन्हें हटाया जाना है। हालाँकि, TRUNCATE को WHOWN क्लॉज़ की आवश्यकता नहीं है क्योंकि यह सभी tuples को हटा देता है, इसलिए tuples को फ़िल्टर करने की कोई आवश्यकता नहीं है।
  4. DELETE तालिकाओं पर लागू संदर्भित ट्रिगर सक्रिय करता है। लेकिन TRUNCATE मेज पर किसी भी ट्रिगर को फायर नहीं करता है।
  5. DELETE कमांड टेबल से एक-एक करके ट्यूपल्स को समाप्त करती है, क्रम में, उन्हें संसाधित किया जाता है। हालाँकि, TRUNCATE एक-एक करके ट्यूपल्स पर काम नहीं करता है। इसके बजाय, TRUNCATE उस डेटा पृष्ठ पर कार्य करता है जो तालिका डेटा संग्रहीत करता है।
  6. DELETE इसे हटाने से पहले टपल पर लॉक को अधिग्रहित करता है जबकि, TRUNCATE डेटा पृष्ठ को हटाने से पहले डेटा पेज पर लॉक का अधिग्रहण करता है।
  7. DELETE कमांड की तुलना में TRUNCATE तेज़ है।
  8. प्रत्येक रिकॉर्ड के लिए DELETE रिकॉर्ड लेनदेन लॉग, जबकि, प्रत्येक डेटा पृष्ठ के लिए TRUNCATE रिकॉर्ड लेनदेन लॉग।
  9. एक बार जब आप TRUNCATE का उपयोग करके डेटा हटाते हैं, तो इसे कभी भी वापस नहीं लिया जा सकता है, जबकि आप अपना डेटा वापस प्राप्त कर सकते हैं, जिसे आपने DELETE कमांड का उपयोग करके हटा दिया था।

निष्कर्ष:

यदि आप तालिका से अभिलेखों को हटाने को अनुकूलित करना चाहते हैं तो आप DELETE कमांड का उपयोग कर सकते हैं। यदि आप तालिका खाली करना चाहते हैं अर्थात आप किसी तालिका में कोई डेटा नहीं छोड़ना चाहते हैं तो TRUNCATE कमांड का उपयोग करें।

Top