किसी दी गई शर्त या शर्तों के सेट के अनुरूप किसी तालिका से पंक्तियों को फ़िल्टर करना डेटा विश्लेषण में बहुत आम प्रथा है। SQL में, आप यह where क्लॉज़ का उपयोग करके कर सकते हैं। इस ट्यूटोरियल में, आप इसे कई अलग-अलग परिदृश्यों में उपयोग करेंगे।
आप RDBMS (Relational Database Management System) के रूप में PostgreSQL का उपयोग करेंगे, लेकिन अन्य डेटाबेस सिस्टम का उपयोग करते समय सिन्टैक्स बहुत अलग नहीं होते। आप एक PostgreSQL डेटाबेस सेट अप करके और देशों का डेटा रखने वाली एक तालिका मैन्युअली बनाकर शुरुआत करेंगे। इसके बाद, आप WHERE क्लॉज़ को शामिल करते हुए कई फ़िल्टर क्वेरी चलाएँगे।
नोट: ट्यूटोरियल के साथ चलने के लिए, आपको SQL और PostgreSQL की बुनियादी जानकारी होनी चाहिए। यदि आप उनसे परिचित नहीं हैं, तो निम्न संसाधन सहायक हो सकते हैं।
इस ट्यूटोरियल के साथ चलने के लिए, आपको PostgreSQL में एक तालिका बनानी होगी जिसमें दुनिया भर के देशों के बारे में जानकारी हो। इस तालिका का उपयोग अलग-अलग परिदृश्यों में WHERE क्लॉज़ कैसे काम करता है, यह दिखाने के लिए किया जाएगा।
चरण 1: एक नया डेटाबेस बनाएँ
pgAdmin (या आपका पसंदीदा SQL इंटरफ़ेस) खोलें और एक नया PostgreSQL डेटाबेस बनाएँ। आप इसका नाम world_data या अपनी पसंद का कुछ भी रख सकते हैं।
चरण 2: हमारी तालिका बनाएँ और उसमें डेटा भरें
जब आपका डेटाबेस तैयार हो जाए, तो एक नया SQL क्वेरी एडिटर विंडो खोलें और निम्न SQL कोड चलाएँ। यह countries नाम की एक तालिका बनाएगा और विभिन्न महाद्वीपों, स्वतंत्रता वर्षों और क्षेत्रों को कवर करते हुए रिकॉर्ड का एक सेट डालेगा:
तालिका में दुनिया भर के कुल लगभग 16 देशों के बारे में विभिन्न जानकारियाँ हैं। तालिका में निम्न कॉलम हैं:
code जो तालिका की प्राथमिक कुंजी है और किसी दिए गए देश के सार्वभौमिक कंट्री कोड को दर्शाता है
name यानी देश का नाम
continent जिसमें कोई देश आता है
region वह भौगोलिक स्थान जहाँ कोई देश स्थित है
surface_area देश का क्षेत्रफल
indep_year यानी वह वर्ष जब किसी देश को स्वतंत्रता मिली
local_name देश का स्थानीय नाम
gov_form यानी देश में प्रचलित शासन का प्रकार
capital देश की राजधानी
cap_long यानी देश की राजधानी का देशांतर
cap_lat यानी देश की राजधानी का अक्षांश
अब WHERE क्लॉज़ के साथ कुछ रिकॉर्ड फ़िल्टर करना शुरू करते हैं।
SQL WHERE क्लॉज़ का उपयोग
SQL में, WHERE क्लॉज़ आपको टेक्स्ट और संख्यात्मक दोनों मानों के आधार पर रिकॉर्ड फ़िल्टर करने देता है। आप इन मानों की तुलना कर सकते हैं, और निम्न तुलना-आधारित ऑपरेशन समर्थित हैं -
= बराबर
<> और != बराबर नहीं
< से कम
> से अधिक
<= कम या बराबर
>= अधिक या बराबर
SQL मानकों के अनुसार <> का उपयोग != की तुलना में बेहतर माना जाता है।
अब उस देश का रिकॉर्ड प्राप्त करें जहाँ codeAUS है। यहाँ जिस कॉलम की आपको तुलना करनी है वह code कॉलम है और तुलना किया जाने वाला मान AUS है। क्वेरी होगी:
अब एक संख्यात्मक तुलना देखते हैं। उन देशों के रिकॉर्ड लें जिन्हें 1901 के बाद स्वतंत्रता (indep_year) मिली:
SELECT*FROM countries WHERE indep_year >1901;संचालित द्वारा
आपको कुल 3 देशों के रिकॉर्ड मिलते हैं जिन्हें 1901 के बाद स्वतंत्रता मिली। यहाँ उपयोग किए गए तुलना-चिह्न पर ध्यान दें। indep_year कॉलम का प्रकार इन्टीजर है। इसलिए, तुलना में कोई कोट नहीं।
आप WHERE क्लॉज़ में कई शर्तों को AND और OR कनेक्टिव का उपयोग करके जोड़ सकते हैं। निम्न क्वेरी आपको उन देशों के रिकॉर्ड देती है जहाँ continent = 'Asia' और indep_year > 1900 -
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901;संचालित द्वारा
आपको कुल तीन देशों की जानकारी मिलती है जो Asia महाद्वीप में स्थित हैं और जिन्हें 1901 के बाद स्वतंत्रता मिली। ध्यान दें कि ऊपर की क्वेरी में आपने टेक्स्ट और संख्यात्मक दोनों मानों की तुलना की। अभ्यास के रूप में, आप WHERE क्लॉज़ में AND और OR के विभिन्न संयोजनों के साथ खेल सकते हैं।
नोट: जब आप AND और OR को मिलाते हैं, तो प्रत्येक शर्त को कोष्ठक के भीतर रखना न भूलें। अन्यथा, शर्तों के मूल्यांकन की वरीयता तय करते समय SQL भ्रमित हो सकता है।
निम्न क्वेरी से, आपको कुल छह देश मिलते हैं।
SELECT*FROM countries WHERE(continent ='Europe'AND indep_year >1900)or(continent ='Asia'AND indep_year >1900);संचालित द्वारा
आप WHERE क्लॉज़ में दो से अधिक शर्तें भी जोड़ सकते हैं:
SELECT*FROM countries WHERE continent ='Asia'OR indep_year >1900OR surface_area >652090;संचालित द्वारा
यहाँ, आपको कुल 15 देश मिलते हैं जो या तो Asia में स्थित हैं या 1901 के बाद स्वतंत्र हुए हैं या जिनका क्षेत्रफल 652090 से अधिक है।
अब क्वेरी को AND वैरिएंट में बदलते हैं, जो अधिक प्रतिबंधात्मक है:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901AND surface_area >652090;संचालित द्वारा
इस मामले में आपको कुल दो देश मिलेंगे।
आप WHERE क्लॉज़ में सबक्वेरी भी जोड़ सकते हैं। मान लें कि आप उस देश का रिकॉर्ड प्राप्त करना चाहते हैं जिसका क्षेत्रफल सबसे अधिक है, लेकिन आप नहीं जानते कि किसी देश द्वारा प्राप्त अधिकतम क्षेत्रफल कितना है। ऐसी स्थिति में निम्न क्वेरी मदद कर सकती है:
SELECT*FROM countries WHERE surface_area in(SELECTMAX(surface_area)FROM countries);संचालित द्वारा
आपको Russia का रिकॉर्ड मिलना चाहिए।
निष्कर्ष
बधाई हो, आपने यह ट्यूटोरियल पूरा कर लिया है। शर्तों के अनुरूप क्वेरी परिणामों को फ़िल्टर करना निश्चित रूप से एक महत्वपूर्ण कौशल है, और यह ट्यूटोरियल इसका परिचय था। यदि आप अपनी SQL कौशल को और निखारना चाहते हैं, तो आप हमारे कोर्स देख सकते हैं (नीचे लिंक)।
लेखक
Sayak Paul
सयाक Hugging Face में काम करते हैं, जहाँ वे कोड लिखते हैं, लेखन करते हैं और बोलते हैं। उनका ज़्यादातर समय Diffusers लाइब्रेरी से जुड़ी हर चीज़ पर बीतता है। वे DataCamp के प्रोजेक्ट इंस्ट्रक्टर भी हैं और कई DataCamp ट्यूटोरियल्स के लेखक हैं। काम के अलावा, आप उन्हें नेटफ्लिक्स पर Suits को न जाने कितनी बार बिंज-वॉच करते हुए पाएंगे।
SQL WHERE क्लॉज़ से जुड़े प्रश्नोत्तर
क्या मैं WHERE क्लॉज़ में टेक्स्ट और संख्यात्मक दोनों कॉलम का उपयोग कर सकता/सकती हूँ?⌄
हाँ, आप टेक्स्ट (उदा., 'Asia') और संख्यात्मक (उदा., > 1901) दोनों मानों से फ़िल्टर कर सकते हैं। बस याद रखें कि टेक्स्ट मानों को सिंगल कोट में रखना आवश्यक है।
SQL में <> और != में क्या अंतर है?⌄
दोनों का अर्थ "बराबर नहीं" होता है, लेकिन <> मानक SQL ऑपरेटर है। कुछ डेटाबेस != का भी समर्थन करते हैं, लेकिन अनुकूलता के लिए <> का उपयोग करना बेहतर है।
NULL मानों वाले रिकॉर्ड कैसे फ़िल्टर करें?⌄
IS NULL या IS NOT NULL का उपयोग करें। उदाहरण के लिए:
SELECT*FROM countries WHERE indep_year ISNULL;संचालित द्वारा
क्या मैं WHERE क्लॉज़ में सबक्वेरी का उपयोग कर सकता/सकती हूँ?⌄
हाँ, सबक्वेरी का उपयोग किसी कॉलम की तुलना किसी दूसरी क्वेरी के परिणाम से करने के लिए किया जा सकता है। उदाहरण के लिए:
SELECT*FROM countries WHERE surface_area =(SELECTMAX(surface_area)FROM countries);संचालित द्वारा
WHERE क्लॉज़ FROM क्लॉज़ से पहले आता है या बाद में?⌄
WHERE क्लॉज़ हमेशा FROM क्लॉज़ के बाद और GROUP BY या ORDER BY जैसी क्लॉज़ के पहले आता है।
क्या मैं WHERE को JOINs के साथ उपयोग कर सकता/सकती हूँ?⌄
बिल्कुल। आप किसी JOIN के बाद संयुक्त परिणाम सेट को फ़िल्टर करने के लिए WHERE क्लॉज़ लागू कर सकते हैं।
किसी दी गई शर्त या शर्तों के सेट के अनुरूप किसी तालिका से पंक्तियों को फ़िल्टर करना डेटा विश्लेषण में बहुत आम प्रथा है। SQL में, आप यह
whereक्लॉज़ का उपयोग करके कर सकते हैं। इस ट्यूटोरियल में, आप इसे कई अलग-अलग परिदृश्यों में उपयोग करेंगे।आप RDBMS (Relational Database Management System) के रूप में PostgreSQL का उपयोग करेंगे, लेकिन अन्य डेटाबेस सिस्टम का उपयोग करते समय सिन्टैक्स बहुत अलग नहीं होते। आप एक PostgreSQL डेटाबेस सेट अप करके और देशों का डेटा रखने वाली एक तालिका मैन्युअली बनाकर शुरुआत करेंगे। इसके बाद, आप
WHEREक्लॉज़ को शामिल करते हुए कई फ़िल्टर क्वेरी चलाएँगे।नोट: ट्यूटोरियल के साथ चलने के लिए, आपको SQL और PostgreSQL की बुनियादी जानकारी होनी चाहिए। यदि आप उनसे परिचित नहीं हैं, तो निम्न संसाधन सहायक हो सकते हैं।
PostgreSQL में तालिका बनाना
इस ट्यूटोरियल के साथ चलने के लिए, आपको PostgreSQL में एक तालिका बनानी होगी जिसमें दुनिया भर के देशों के बारे में जानकारी हो। इस तालिका का उपयोग अलग-अलग परिदृश्यों में
WHEREक्लॉज़ कैसे काम करता है, यह दिखाने के लिए किया जाएगा।चरण 1: एक नया डेटाबेस बनाएँ
pgAdmin (या आपका पसंदीदा SQL इंटरफ़ेस) खोलें और एक नया PostgreSQL डेटाबेस बनाएँ। आप इसका नाम
world_dataया अपनी पसंद का कुछ भी रख सकते हैं।चरण 2: हमारी तालिका बनाएँ और उसमें डेटा भरें
जब आपका डेटाबेस तैयार हो जाए, तो एक नया SQL क्वेरी एडिटर विंडो खोलें और निम्न SQL कोड चलाएँ। यह
countriesनाम की एक तालिका बनाएगा और विभिन्न महाद्वीपों, स्वतंत्रता वर्षों और क्षेत्रों को कवर करते हुए रिकॉर्ड का एक सेट डालेगा:तालिका में दुनिया भर के कुल लगभग 16 देशों के बारे में विभिन्न जानकारियाँ हैं। तालिका में निम्न कॉलम हैं:
codeजो तालिका की प्राथमिक कुंजी है और किसी दिए गए देश के सार्वभौमिक कंट्री कोड को दर्शाता हैnameयानी देश का नामcontinentजिसमें कोई देश आता हैregionवह भौगोलिक स्थान जहाँ कोई देश स्थित हैsurface_areaदेश का क्षेत्रफलindep_yearयानी वह वर्ष जब किसी देश को स्वतंत्रता मिलीlocal_nameदेश का स्थानीय नामgov_formयानी देश में प्रचलित शासन का प्रकारcapitalदेश की राजधानीcap_longयानी देश की राजधानी का देशांतरcap_latयानी देश की राजधानी का अक्षांशअब
WHEREक्लॉज़ के साथ कुछ रिकॉर्ड फ़िल्टर करना शुरू करते हैं।SQL WHERE क्लॉज़ का उपयोग
SQL में,
WHEREक्लॉज़ आपको टेक्स्ट और संख्यात्मक दोनों मानों के आधार पर रिकॉर्ड फ़िल्टर करने देता है। आप इन मानों की तुलना कर सकते हैं, और निम्न तुलना-आधारित ऑपरेशन समर्थित हैं -=बराबर<>और!=बराबर नहीं<से कम>से अधिक<=कम या बराबर>=अधिक या बराबरSQL मानकों के अनुसार
<>का उपयोग!=की तुलना में बेहतर माना जाता है।अब उस देश का रिकॉर्ड प्राप्त करें जहाँ
codeAUSहै। यहाँ जिस कॉलम की आपको तुलना करनी है वहcodeकॉलम है और तुलना किया जाने वाला मानAUSहै। क्वेरी होगी:और आपको मिलेगा:
यहाँ कुछ बातों पर ध्यान दें -
WHEREक्लॉज़ हमेशाFROMके बाद आता है।SQL में स्ट्रिंग्स को सिंगल कोट में लिखा जाता है।
अब एक संख्यात्मक तुलना देखते हैं। उन देशों के रिकॉर्ड लें जिन्हें
1901के बाद स्वतंत्रता (indep_year) मिली:आपको कुल 3 देशों के रिकॉर्ड मिलते हैं जिन्हें
1901के बाद स्वतंत्रता मिली। यहाँ उपयोग किए गए तुलना-चिह्न पर ध्यान दें।indep_yearकॉलम का प्रकार इन्टीजर है। इसलिए, तुलना में कोई कोट नहीं।आप
WHEREक्लॉज़ में कई शर्तों कोANDऔरORकनेक्टिव का उपयोग करके जोड़ सकते हैं। निम्न क्वेरी आपको उन देशों के रिकॉर्ड देती हैजहाँ continent = 'Asia' और indep_year > 1900-आपको कुल तीन देशों की जानकारी मिलती है जो
Asiaमहाद्वीप में स्थित हैं और जिन्हें1901के बाद स्वतंत्रता मिली। ध्यान दें कि ऊपर की क्वेरी में आपने टेक्स्ट और संख्यात्मक दोनों मानों की तुलना की। अभ्यास के रूप में, आपWHEREक्लॉज़ मेंANDऔरORके विभिन्न संयोजनों के साथ खेल सकते हैं।नोट: जब आप
ANDऔरORको मिलाते हैं, तो प्रत्येक शर्त को कोष्ठक के भीतर रखना न भूलें। अन्यथा, शर्तों के मूल्यांकन की वरीयता तय करते समय SQL भ्रमित हो सकता है।निम्न क्वेरी से, आपको कुल छह देश मिलते हैं।
आप
WHEREक्लॉज़ में दो से अधिक शर्तें भी जोड़ सकते हैं:यहाँ, आपको कुल 15 देश मिलते हैं जो या तो
Asiaमें स्थित हैं या1901के बाद स्वतंत्र हुए हैं या जिनका क्षेत्रफल652090से अधिक है।अब क्वेरी को
ANDवैरिएंट में बदलते हैं, जो अधिक प्रतिबंधात्मक है:इस मामले में आपको कुल दो देश मिलेंगे।
आप
WHEREक्लॉज़ में सबक्वेरी भी जोड़ सकते हैं। मान लें कि आप उस देश का रिकॉर्ड प्राप्त करना चाहते हैं जिसका क्षेत्रफल सबसे अधिक है, लेकिन आप नहीं जानते कि किसी देश द्वारा प्राप्त अधिकतम क्षेत्रफल कितना है। ऐसी स्थिति में निम्न क्वेरी मदद कर सकती है:आपको
Russiaका रिकॉर्ड मिलना चाहिए।निष्कर्ष
बधाई हो, आपने यह ट्यूटोरियल पूरा कर लिया है। शर्तों के अनुरूप क्वेरी परिणामों को फ़िल्टर करना निश्चित रूप से एक महत्वपूर्ण कौशल है, और यह ट्यूटोरियल इसका परिचय था। यदि आप अपनी SQL कौशल को और निखारना चाहते हैं, तो आप हमारे कोर्स देख सकते हैं (नीचे लिंक)।