SQL में दो तालिकाओं की तुलना करें

Sql Mem Do Talika Om Ki Tulana Karem



SQL में डेटा तुलना एक सामान्य कार्य है जिसका सामना हर डेटाबेस डेवलपर को कभी-कभी करना पड़ता है। सौभाग्य से, डेटा तुलना कई प्रकार के प्रारूपों में आती है जैसे शाब्दिक तुलना, बूलियन तुलना, आदि।

हालाँकि, वास्तविक दुनिया के डेटा तुलना परिदृश्यों में से एक जो आपके सामने आ सकता है वह दो तालिकाओं के बीच तुलना है। यह डेटा सत्यापन, त्रुटि पहचान, दोहराव या डेटा अखंडता सुनिश्चित करने जैसे कार्यों में महत्वपूर्ण भूमिका निभाता है।







इस ट्यूटोरियल में, हम उन सभी विभिन्न तरीकों और तकनीकों का पता लगाएंगे जिनका उपयोग हम SQL में दो डेटाबेस तालिकाओं की तुलना करने के लिए कर सकते हैं।



नमूना डेटा सेटअप

इससे पहले कि हम प्रत्येक विधि पर विचार करें, आइए प्रदर्शन उद्देश्यों के लिए एक बुनियादी डेटा सेटअप स्थापित करें।



जैसा कि उदाहरण में दिखाया गया है, हमारे पास नमूना डेटा वाली दो तालिकाएँ हैं।





नमूना तालिका 1:

निम्नलिखित में पहली तालिका बनाने और तालिका में नमूना डेटा सम्मिलित करने के लिए प्रश्न शामिल हैं:



तालिका बनाएं नमूना_tb1 (
कर्मचारी_आईडी INT प्राथमिक कुंजी ऑटो_वृद्धि,
प्रथम_नाम VARCHAR ( पचास ) ,
अंतिम_नाम VARCHAR ( पचास ) ,
विभाग VARCHAR ( पचास ) ,
वेतन दशमलव ( 10 , 2 )
) ;

नमूना_tb1 में डालें ( प्रथम_नाम, अंतिम_नाम, विभाग, वेतन )
मान
( 'पेनेलोप' , 'पीछा करना' , 'एचआर' , 55000.00 ) ,
( 'मैथ्यू' , 'पिंजरा' , 'यह' , 60000.00 ) ,
( 'जेनिफर' , 'डेविस' , 'वित्त' , 50000.00 ) ,
( 'कर्स्टन' , 'फ़ॉसेट' , 'यह' , 62000.00 ) ,
( 'कैमरून' , 'कॉस्टनर' , 'वित्त' , 48000.00 ) ;

इससे नाम, विभाग और वेतन जैसी विभिन्न सूचनाओं के साथ 'sample_tb1' नामक एक नई तालिका बननी चाहिए।

परिणामी तालिका इस प्रकार है:

नमूना तालिका 2:

आइए आगे बढ़ें और दो नमूना तालिकाएँ बनाएँ। मान लें कि यह पहली तालिका की बैकअप प्रतिलिपि है। हम तालिका बना सकते हैं और एक नमूना डेटा सम्मिलित कर सकते हैं जैसा कि निम्नलिखित में दिखाया गया है:

तालिका नमूना_tb2 बनाएं (
कर्मचारी_आईडी INT प्राथमिक कुंजी ऑटो_वृद्धि,
प्रथम_नाम VARCHAR ( पचास ) ,
अंतिम_नाम VARCHAR ( पचास ) ,
विभाग VARCHAR ( पचास ) ,
वेतन दशमलव ( 10 , 2 )
) ;
नमूना_tb2 में डालें ( प्रथम_नाम, अंतिम_नाम, विभाग, वेतन )
मान
( 'पेनेलोप' , 'पीछा करना' , 'एचआर' , 55000.00 ) ,
( 'मैथ्यू' , 'पिंजरा' , 'यह' , 60000.00 ) ,
( 'जेनिफर' , 'डेविस' , 'वित्त' , 50000.00 ) ,
( 'कर्स्टन' , 'फ़ॉसेट' , 'यह' , 62000.00 ) ,
( 'ऑड्रे' , 'डीन' , 'वित्त' , 48000.00 ) ;

इससे एक तालिका बननी चाहिए और पिछली क्वेरी में निर्दिष्ट अनुसार नमूना डेटा सम्मिलित करना चाहिए। परिणामी तालिका इस प्रकार है:

एक्सेप्ट का उपयोग करके दो तालिकाओं की तुलना करें

SQL में दो तालिकाओं की तुलना करने के सबसे सामान्य तरीकों में से एक EXCEPT ऑपरेटर का उपयोग करना है। यह उन पंक्तियों को ढूंढता है जो पहली तालिका में मौजूद हैं लेकिन दूसरी तालिका में नहीं।

हम इसका उपयोग नमूना तालिकाओं के साथ तुलना करने के लिए निम्नानुसार कर सकते हैं:

चुनना *
सैंपल_tb1 से
के अलावा
चुनना *
नमूना_tb2 से;

इस उदाहरण में, EXCEPT ऑपरेटर पहली क्वेरी (sample_tb1) से सभी अलग-अलग पंक्तियाँ लौटाता है जो दूसरी क्वेरी (sample_tb2) में दिखाई नहीं देती हैं।

यूनियन का उपयोग करके दो तालिकाओं की तुलना करें

दूसरी विधि जिसका हम उपयोग कर सकते हैं वह ग्रुप बाय क्लॉज के साथ संयोजन में यूनियन ऑपरेटर है। यह डुप्लिकेट रिकॉर्ड को संरक्षित करते हुए उन रिकॉर्ड्स की पहचान करने में मदद करता है जो एक तालिका में मौजूद हैं, दूसरे में नहीं।

वह क्वेरी लें जो निम्नलिखित में प्रदर्शित है:

चुनना
कर्मचारी आयडी,
पहला नाम,
उपनाम,
विभाग,
वेतन
से
(
चुनना
कर्मचारी आयडी,
पहला नाम,
उपनाम,
विभाग,
वेतन
से
नमूना_tb1
संघ सब
चुनना
कर्मचारी आयडी,
पहला नाम,
उपनाम,
विभाग,
वेतन
से
नमूना_tb2
) एएस संयुक्त_डेटा
द्वारा समूह बनाएं
कर्मचारी आयडी,
पहला नाम,
उपनाम,
विभाग,
वेतन
होना
गिनती करना ( * ) = 1 ;

दिए गए उदाहरण में, हम डुप्लिकेट रखते हुए दोनों तालिकाओं से डेटा को संयोजित करने के लिए UNION ALL ऑपरेटर का उपयोग करते हैं।

फिर हम सभी कॉलमों द्वारा संयुक्त डेटा को समूहीकृत करने के लिए ग्रुप बाय क्लॉज का उपयोग करते हैं। अंत में, हम यह सुनिश्चित करने के लिए HAVING क्लॉज़ का उपयोग करते हैं कि केवल एक की गिनती वाले रिकॉर्ड (कोई डुप्लिकेट नहीं) चुने गए हैं।

आउटपुट:

यह विधि थोड़ी अधिक जटिल है लेकिन यह बहुत बेहतर जानकारी प्रदान करती है क्योंकि आपको वास्तविक डेटा मिलता है जो दोनों तालिकाओं से गायब है।

इनर जॉइन का उपयोग करके दो तालिकाओं की तुलना करें

यदि आप सोच रहे हैं, तो इनर जॉइन का उपयोग क्यों न करें? आप मुद्दे पर होंगे. हम तालिकाओं की तुलना करने और सामान्य रिकॉर्ड ढूंढने के लिए इनर जॉइन का उपयोग कर सकते हैं।

उदाहरण के लिए निम्नलिखित क्वेरी लें:

चुनना
नमूना_tb1. *
से
नमूना_tb1
इनर जॉइन सैम्पल_tb2 चालू
नमूना_टीबी1.कर्मचारी_आईडी = नमूना_टीबी2.कर्मचारी_आईडी;

इस उदाहरण में, हम किसी दिए गए कॉलम के आधार पर दोनों तालिकाओं में मौजूद रिकॉर्ड ढूंढने के लिए SQL INNER JOIN का उपयोग करते हैं। यद्यपि यह काम करता है, यह कभी-कभी भ्रामक हो सकता है क्योंकि आप निश्चित नहीं हैं कि डेटा वास्तव में गायब है या दोनों तालिकाओं में या सिर्फ एक में मौजूद है।

निष्कर्ष

इस ट्यूटोरियल में, हमने उन सभी तरीकों और तकनीकों के बारे में सीखा जिनका उपयोग हम SQL में दो तालिकाओं की तुलना करने के लिए कर सकते हैं।