ड्रॉप बनाम ट्रंकेट
ड्रॉप और ट्रंकट दो SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) स्टेटमेंट हैं जिनका उपयोग डेटाबेस मैनेजमेंट सिस्टम में किया जाता है, जहां हम डेटाबेस से डेटा रिकॉर्ड हटाना चाहते हैं। ड्रॉप और ट्रंकेट दोनों कथन एक तालिका और संबंधित SQL कथन में संपूर्ण डेटा को हटा देते हैं। इस मामले में डिलीट ऑपरेशन प्रभावी नहीं है क्योंकि यह ड्रॉप और ट्रंकेट की तुलना में अधिक स्टोरेज स्पेस का उपयोग करता है।
यदि हम किसी डेटाबेस में किसी तालिका को उसके सभी डेटा के साथ पूरी तरह से छोड़ना चाहते हैं, तो SQL हमें ड्रॉप स्टेटमेंट का उपयोग करके इसे आसानी से करने की अनुमति देता है। ड्रॉप कमांड एक डीडीएल (डेटा डेफिनिशन लैंग्वेज) कमांड है, और इसका इस्तेमाल मौजूदा डेटाबेस, टेबल, इंडेक्स या व्यू को नष्ट करने के लिए किया जा सकता है।यह एक तालिका में संपूर्ण जानकारी, साथ ही डेटाबेस से तालिका संरचना को हटा देता है। साथ ही, हम तालिका में सभी डेटा से छुटकारा पाना चाहते हैं, लेकिन तालिका के बिना, और हम ऐसे परिदृश्य में SQL में Truncate कथन का उपयोग कर सकते हैं। Truncate भी एक DDL कमांड है और यह एक टेबल की सभी पंक्तियों को हटा देता है लेकिन भविष्य में उपयोग के लिए टेबल की परिभाषा को समान रखता है।
ड्रॉप कमांड
जैसा कि पहले उल्लेख किया गया है, ड्रॉप कमांड टेबल की परिभाषा और उसके सभी डेटा, अखंडता बाधाओं, इंडेक्स, ट्रिगर्स और एक्सेस विशेषाधिकारों को हटा देता है, जो उस विशेष टेबल पर बनाया गया था। तो यह मौजूदा ऑब्जेक्ट को डेटाबेस से पूरी तरह से छोड़ देता है, और अन्य तालिकाओं के संबंध भी कमांड को निष्पादित करने के बाद मान्य नहीं होंगे। साथ ही यह डेटा डिक्शनरी से तालिका के बारे में सभी जानकारी को हटा देता है। टेबल पर ड्रॉप स्टेटमेंट का उपयोग करने के लिए विशिष्ट सिंटैक्स निम्नलिखित है।
ड्रॉप टेबल
हमें केवल उस तालिका के नाम को बदलना होगा जिसे हम ड्रॉप कमांड के उपरोक्त उदाहरण में डेटाबेस से हटाना चाहते हैं।
यह बताना महत्वपूर्ण है कि ड्रॉप स्टेटमेंट का उपयोग किसी तालिका को हटाने के लिए नहीं किया जा सकता है, जिसे पहले से ही एक विदेशी कुंजी बाधा द्वारा संदर्भित किया गया है। उस स्थिति में, संदर्भित विदेशी कुंजी बाधा, या उस विशेष तालिका को पहले छोड़ना होगा। साथ ही, डेटाबेस में सिस्टम टेबल पर ड्रॉप स्टेटमेंट लागू नहीं किया जा सकता है।
चूंकि ड्रॉप कमांड एक ऑटो कमिट स्टेटमेंट है, एक बार चलाए गए ऑपरेशन को वापस रोल नहीं किया जा सकता है और कोई ट्रिगर नहीं चलाया जाएगा। जब कोई तालिका गिरा दी जाती है, तो तालिका के सभी संदर्भ मान्य नहीं होंगे, और इसलिए, यदि हम तालिका का फिर से उपयोग करना चाहते हैं, तो इसे सभी अखंडता बाधाओं और एक्सेस विशेषाधिकारों के साथ फिर से बनाना होगा। अन्य तालिकाओं के सभी संबंधों को भी फिर से स्थापित करना होगा।
छोटा आदेश
Truncate कमांड एक डीडीएल कमांड है, और यह बिना किसी उपयोगकर्ता निर्दिष्ट शर्तों के एक तालिका में सभी पंक्तियों को हटा देता है, और तालिका द्वारा उपयोग की जाने वाली जगह को छोड़ देता है, लेकिन इसके कॉलम, इंडेक्स और बाधाओं के साथ तालिका संरचना समान रहती है।Truncate तालिका डेटा को संग्रहीत करने के लिए उपयोग किए जाने वाले डेटा पृष्ठों को हटाकर तालिका से डेटा को हटा देता है, और केवल इन पृष्ठ डीललोकेशन को लेनदेन लॉग में रखा जाता है। इसलिए यह अन्य संबंधित SQL कमांड जैसे Delete की तुलना में कम लेनदेन लॉग संसाधनों और सिस्टम संसाधनों का उपयोग करता है। तो ट्रंकेट दूसरों की तुलना में थोड़ा तेज बयान है। ट्रंकेट कमांड के लिए विशिष्ट सिंटैक्स निम्नलिखित है।
ट्रंकेट टेबल
हमें उस तालिका के नाम को बदलना चाहिए, जिससे हम उपरोक्त सिंटैक्स में संपूर्ण डेटा को हटाना चाहते हैं।
ट्रंकेट का उपयोग उस तालिका पर नहीं किया जा सकता है जिसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया गया है। यह कार्य करने से पहले स्वचालित रूप से एक प्रतिबद्धता का उपयोग करता है और बाद में दूसरा प्रतिबद्ध होता है इसलिए लेनदेन का रोलबैक असंभव है, और कोई ट्रिगर नहीं निकाल दिया जाता है। यदि हम तालिका का पुन: उपयोग करना चाहते हैं तो हमें केवल डेटाबेस में मौजूदा तालिका परिभाषा तक पहुंचने की आवश्यकता है।
ड्रॉप और ट्रंकेट में क्या अंतर है?
ड्रॉप और ट्रंकेट दोनों कमांड डीडीएल कमांड हैं और ऑटो कमिट स्टेटमेंट भी हैं, इसलिए इन कमांड का उपयोग करके किए गए लेनदेन को वापस नहीं किया जा सकता है।
ड्रॉप और ट्रंकेट के बीच प्राथमिक अंतर यह है कि ड्रॉप कमांड न केवल एक तालिका के सभी डेटा को हटाता है, बल्कि यह सभी संदर्भों के साथ डेटाबेस से तालिका संरचना को स्थायी रूप से हटा देता है, जबकि ट्रंकेट कमांड केवल सभी को हटा देता है तालिका में पंक्तियाँ, और यह तालिका संरचना और उसके संदर्भों को सुरक्षित रखता है।
यदि कोई तालिका गिरा दी जाती है, तो अन्य तालिकाओं से संबंध मान्य नहीं होंगे, और अखंडता की कमी और पहुंच विशेषाधिकार भी हटा दिए जाएंगे। इसलिए यदि तालिका को पुन: उपयोग करने की आवश्यकता है, तो इसे संबंधों, अखंडता बाधाओं और एक्सेस विशेषाधिकारों के साथ पुनर्निर्माण करना होगा। लेकिन अगर एक टेबल को छोटा कर दिया जाता है, तो टेबल संरचना और उसकी बाधाएं भविष्य में उपयोग के लिए बनी रहती हैं, और इसलिए, उपरोक्त किसी भी मनोरंजन की पुन: उपयोग के लिए आवश्यकता नहीं होती है।
जब इन आदेशों को लागू किया जाता है, तो हमें इनका उपयोग करने में सावधानी बरतनी चाहिए। इसके अलावा, हमें इन आदेशों की प्रकृति, वे कैसे काम करते हैं, और लापता आवश्यक चीजों को रोकने के लिए इनका उपयोग करने से पहले कुछ सावधानीपूर्वक योजना के बारे में बेहतर समझ होनी चाहिए।अंत में, इन दोनों कमांड का उपयोग कम संसाधनों की खपत करते हुए, डेटाबेस को जल्दी और आसानी से साफ करने के लिए किया जा सकता है।