क्यों ट्राई कर रहा है DDL?


15

मेरे पास एक साक्षात्कार प्रश्न है, जो मेरे साक्षात्कार के दौरान पूछा गया था। मैंने सवाल का जवाब दिया, लेकिन साक्षात्कारकर्ता मेरे जवाब से इतना आश्वस्त नहीं था। तो, किसी ने मुझे मेरी समझ के साथ सही किया?

Q. क्यों Truncate DDL है जहां डिलीट DML है? दोनों लगभग एक ही काम करते हैं (पंक्तियों को हटाते हुए)

उत्तर:। जब हम Truncate का उपयोग कर रहे हैं, तो हम पूर्ववत-तालिका-स्थान में सहेजे बिना डेटा द्वारा आवंटित पूरे स्थान को डी-आवंटित कर रहे हैं। लेकिन, Delete के मामले में, हम सभी डेटा को पूर्ववत तालिका-स्थान में डाल रहे हैं और फिर हम सभी डेटा हटा रहे हैं।

कृपया, अगर किसी को उपरोक्त के लिए सबसे अच्छा जवाब पता है, तो कृपया समझाएं।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट 9

जवाबों:


14

डीएमएल बनाम डीडीएल भेद उनके नामों के रूप में स्पष्ट नहीं है, इसलिए चीजें कभी-कभी थोड़ी खराब हो जाती हैं।

ऑरेकल कॉन्सेप्ट गाइड में डीडीएल के रूप में स्पष्ट रूप से वर्गीकृत हैTRUNCATE , लेकिन DELETEडीएमएल के रूप में।

TRUNCATEOracle पर DDL कैंप में मुख्य बिंदु , जैसा कि मैं समझता हूँ, वे हैं:

  • TRUNCATEभंडारण पैरामीटर ( NEXTपैरामीटर) को बदल सकते हैं , और वे ऑब्जेक्ट परिभाषा का हिस्सा हैं - जो DDL शिविर में है।
  • TRUNCATEएक निहित है commit, और वापस नहीं लुढ़काया जा सकता है (फ्लैशबैक एक तरफ) - अधिकांश (सभी?) डीडीएल संचालन ओरेकल में ऐसा करते हैं, कोई बीएमएल नहीं करता है।

यह तथ्य जो ट्रिगर TRUNCATEनहीं ON DELETEकरता है, उसे सामान्य डीएमएल संचालन से अलग करता है (लेकिन कुछ प्रत्यक्ष पथ डीएमएल संचालन भी ट्रिगर को छोड़ देते हैं, इसलिए यह एक स्पष्ट संकेतक नहीं है)।

यही दस्तावेज DELETEUNDO उत्पन्न TRUNCATEकरता है , लेकिन ऐसा नहीं है, इसलिए आपका कथन इस संदर्भ में सही है। (ध्यान दें कि TRUNCATEकुछ उत्पन्न करता है REDOताकि पुनर्स्थापना / पुनर्प्राप्ति के मामले में ट्रंकेशन को फिर से दोहराया जा सके।) लेकिन कुछ NOLOGGINGऑपरेशन यूएनडीओ को कम भी कर सकते हैं (बिल्कुल भी किसी के बारे में निश्चित नहीं), इसलिए यह मेरी राय में भी स्पष्ट संकेतक नहीं है।

तो मैं इसे इस प्रकार लिखूंगा:

  • truncate"लेन-देन" इस अर्थ में नहीं है कि यह शुरू होता है और इसे वापस नहीं लाया जा सकता है, और वस्तु भंडारण विशेषताओं को संशोधित कर सकता है। तो यह साधारण DML नहीं है - Oracle इसे DDL के रूप में वर्गीकृत करता है।
  • delete एक सामान्य डीएमएल स्टेटमेंट है।

जब आप एक तालिका बनाते हैं, तो आप चीजों को निर्दिष्ट कर सकते हैं जैसे कि यह किस टेबलस्पेस में जाता है, प्रारंभिक आकार, अगली सीमा आकार, आदि। वे भंडारण गुण हैं। हां, वे एक तालिका (या सूचकांक, या विभाजन) मेटाडेटा का हिस्सा हैं।
Mat

ध्यान दें कि SQL मानक INSERT, DELETE और UPDATE के साथ "डेटा हेरफेर" अध्याय में TRUNCATE को सूचीबद्ध करता है।
a_horse_with_no_name

2

मुझे लगता है कि truncateके समान है drop, alter, createवे के रूप में सभी एक मेज पर काम यानी वे सब मेज स्तर आदेशों हैं। करने के लिए एक ओर जहां 'हटाएँ' इसी तरह की है insert, select, updateएक पंक्तियों पर सभी काम यानी के रूप में वे सब पंक्ति स्तर आदेशों हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.