oracle - ओरेकल में दोहरी तालिका क्या है?




dual-table (12)

यह एक खाली वस्तु है जो उस रिक्त पंक्ति को वापस करने के लिए रखती है। उदाहरण के लिए: दोहरी से 1 का चयन करें; रिटर्न 1

दोहरी से 21 + 44 का चयन करें; 65 रिटर्न

दोहरा से [अनुक्रम] .nextval का चयन करें; अनुक्रम से अगला मूल्य देता है।

मैंने लोगों को इस तालिका का जिक्र सुना है और यह सुनिश्चित नहीं था कि यह किस बारे में था।


यह ओरेकल में विशेष तालिका है। मैं अक्सर इसे गणना या सिस्टम चर की जांच के लिए उपयोग करता हूं। उदाहरण के लिए:

  • गणना के परिणाम Select 2*4 from dual प्रिंटों Select 2*4 from dual
  • सर्वर वर्तमान दिनांक Select sysdate from dual प्रिंट Select sysdate from dual

en.wikipedia.org/wiki/DUAL_table

इतिहास

आंतरिक विचारों में शामिल होने के लिए टेबल प्रदान करने के लिए ओयूकल निगम के चक वीस द्वारा डीयूएएल तालिका बनाई गई थी:

मैंने ओरेकल डेटा डिक्शनरी में एक अंतर्निहित वस्तु के रूप में डीयूएएल तालिका बनाई। यह कभी भी खुद को देखने के लिए नहीं था, बल्कि इसके बजाय एक दृश्य के अंदर इस्तेमाल किया गया था जिसकी पूछताछ की जाने वाली थी। विचार यह था कि आप डुएल टेबल में जॉइन कर सकते हैं और अपनी तालिका में प्रत्येक पंक्ति के परिणामस्वरूप दो पंक्तियां बना सकते हैं। फिर, ग्रुप बाय का उपयोग करके, परिणामी जुड़ने को डेटा सीमा के लिए और INDEX सीमा के लिए भंडारण की मात्रा दिखाने के लिए संक्षेप में सारांशित किया जा सकता है। नाम, डीयूएएल, केवल एक से पंक्तियों की एक जोड़ी बनाने की प्रक्रिया के लिए उपयुक्त लग रहा था। en.wikipedia.org/wiki/DUAL_table

यह उपर्युक्त से स्पष्ट नहीं हो सकता है, लेकिन मूल डीयूएएल तालिका में दो पंक्तियां थीं (इसलिए इसका नाम)। आजकल इसमें केवल एक पंक्ति है।

अनुकूलन

डीयूएएल मूल रूप से एक टेबल था और डेटाबेस इंजन डीयूएएल से चयन करते समय तालिका पर डिस्क IO निष्पादित करेगा। यह डिस्क आईओ आमतौर पर लॉजिकल आईओ (भौतिक डिस्क एक्सेस शामिल नहीं) था क्योंकि डिस्क ब्लॉक आमतौर पर स्मृति में पहले ही कैश किए जाते थे। इसके परिणामस्वरूप डीयूएएल तालिका के खिलाफ बड़ी मात्रा में तार्किक आईओ शामिल हुआ।

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


यह एक प्रकार का डमी टेबल है जिसमें एक रिकॉर्ड होता है जिसे आप वास्तव में डेटा में रूचि नहीं रखते हैं, लेकिन इसके बजाय कुछ सिस्टम फ़ंक्शन का चयन किसी चयनित कथन में करना चाहते हैं:

उदाहरण के select sysdate from dual;

http://www.adp-gmbh.ch/ora/misc/dual.html देखें


डुएल हम मुख्य रूप से अनुक्रमों से अगले नंबर प्राप्त करने के लिए उपयोग किया जाता है।

सिंटेक्स: डुएलएएल से 'sequence_name'.NEXTVAL चुनें

यह एक पंक्ति एक कॉलम मान (NEXTVAL कॉलम नाम) वापस करेगा।


मुझे लगता है कि यह विकिपीडिया लेख स्पष्टीकरण में मदद कर सकता है।

en.wikipedia.org/wiki/DUAL_table

डीयूएएल तालिका सभी ओरेकल डेटाबेस प्रतिष्ठानों में डिफ़ॉल्ट रूप से मौजूद एक विशेष एक-पंक्ति तालिका है। यह एक स्यूडोकॉलम जैसे SYSDATE या USER को चुनने के लिए उपयुक्त है तालिका में एक एकल VARCHAR2 (1) स्तंभ है जिसे ड्यूममी कहा जाता है जिसका "एक्स" का मान होता है


यह एक तत्व है जिसमें एक तत्व है। यह उपयोगी है क्योंकि ओरेकल जैसे बयान की अनुमति नहीं देता है

 SELECT 3+4

आप लिखकर इस प्रतिबंध के आसपास काम कर सकते हैं

 SELECT 3+4 FROM DUAL

बजाय।


एसएलएल में उपलब्ध कार्यों का उपयोग करने के लिए पीएल / एसक्यूएल विकास में डुएल आवश्यक है

जैसे

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;

एक छद्म तालिका की तरह आप कमांड चला सकते हैं और परिणामों को वापस प्राप्त कर सकते हैं, जैसे sysdate। यह भी जांचने में आपकी सहायता करता है कि क्या ओरेकल ऊपर है और एसक्यूएल सिंटैक्स आदि की जांच करें।


डुएल के बारे में अधिक तथ्य ....

asktom.oracle.com/pls/asktom/…

यहां किए गए रोमांचक प्रयोग, और टॉम द्वारा अधिक रोमांचकारी स्पष्टीकरण


डीयूएएल तालिका सभी ओरेकल डेटाबेस प्रतिष्ठानों में डिफ़ॉल्ट रूप से मौजूद एक विशेष एक-पंक्ति तालिका है। यह एक स्यूडोकॉलम जैसे SYSDATE या USER का चयन करने के लिए उपयुक्त है

तालिका में एक एकल VARCHAR2 (1) कॉलम है जिसे ड्यूमी कहा जाता है जिसका "एक्स" का मान होता है

आप इसके बारे में en.wikipedia.org/wiki/DUAL_table में सब कुछ पढ़ सकते हैं


जबकि आपको आमतौर पर जेन-फ्रैंकोइस सावार्ड द्वारा समझाया गया SQL सर्वर में एक DUAL तालिका की आवश्यकता नहीं है, मुझे अतीत में वाक्य रचनात्मक कारणों के लिए डीयूएएल अनुकरण करने की आवश्यकता है। यहां तीन विकल्प दिए गए हैं:

एक DUAL टेबल बनाएं या देखें

-- A table
SELECT 'X' AS DUMMY INTO DUAL;

-- A view
CREATE VIEW DUAL AS SELECT 'X' AS DUMMY;

एक बार बनाया गया, आप ओरेकल में इसका उपयोग कर सकते हैं।

एक सामान्य टेबल अभिव्यक्ति या व्युत्पन्न तालिका का प्रयोग करें

यदि आपको केवल एक प्रश्न के दायरे के लिए DUAL आवश्यकता है, तो यह भी हो सकता है:

-- Common table expression
WITH DUAL(DUMMY) AS (SELECT 'X')
SELECT * FROM DUAL

-- Derived table
SELECT *
FROM (
  SELECT 'X'
) DUAL(DUMMY)






oracle dual-table