मुख्य सामग्री पर जाएं

SQL में WHERE क्लॉज़ का परिचय

इस ट्यूटोरियल में, आप WHERE क्लॉज़ का उपयोग करके SQL में पंक्तियों को फ़िल्टर करना सीखेंगे।
अपडेट किया गया 25 सित॰ 2026  · 7 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

किसी दी गई शर्त या शर्तों के सेट के अनुरूप किसी तालिका से पंक्तियों को फ़िल्टर करना डेटा विश्लेषण में बहुत आम प्रथा है। 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 नाम की एक तालिका बनाएगा और विभिन्न महाद्वीपों, स्वतंत्रता वर्षों और क्षेत्रों को कवर करते हुए रिकॉर्ड का एक सेट डालेगा:

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

तालिका में दुनिया भर के कुल लगभग 16 देशों के बारे में विभिन्न जानकारियाँ हैं। तालिका में निम्न कॉलम हैं:

  • code जो तालिका की प्राथमिक कुंजी है और किसी दिए गए देश के सार्वभौमिक कंट्री कोड को दर्शाता है

  • name यानी देश का नाम

  • continent जिसमें कोई देश आता है

  • region वह भौगोलिक स्थान जहाँ कोई देश स्थित है

  • surface_area देश का क्षेत्रफल

  • indep_year यानी वह वर्ष जब किसी देश को स्वतंत्रता मिली

  • local_name देश का स्थानीय नाम

  • gov_form यानी देश में प्रचलित शासन का प्रकार

  • capital देश की राजधानी

  • cap_long यानी देश की राजधानी का देशांतर

  • cap_lat यानी देश की राजधानी का अक्षांश

अब WHERE क्लॉज़ के साथ कुछ रिकॉर्ड फ़िल्टर करना शुरू करते हैं।

SQL WHERE क्लॉज़ का उपयोग

SQL में, WHERE क्लॉज़ आपको टेक्स्ट और संख्यात्मक दोनों मानों के आधार पर रिकॉर्ड फ़िल्टर करने देता है। आप इन मानों की तुलना कर सकते हैं, और निम्न तुलना-आधारित ऑपरेशन समर्थित हैं -

  • = बराबर

  • <> और != बराबर नहीं

  • < से कम

  • > से अधिक

  • <= कम या बराबर

  • >= अधिक या बराबर

SQL मानकों के अनुसार <> का उपयोग != की तुलना में बेहतर माना जाता है।

अब उस देश का रिकॉर्ड प्राप्त करें जहाँ code AUS है। यहाँ जिस कॉलम की आपको तुलना करनी है वह code कॉलम है और तुलना किया जाने वाला मान AUS है। क्वेरी होगी:

SELECT * FROM countries WHERE code = 'AUS';

और आपको मिलेगा:

यहाँ कुछ बातों पर ध्यान दें -

  • WHERE क्लॉज़ हमेशा FROM के बाद आता है।

  • SQL में स्ट्रिंग्स को सिंगल कोट में लिखा जाता है।

अब एक संख्यात्मक तुलना देखते हैं। उन देशों के रिकॉर्ड लें जिन्हें 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 > 1900 OR surface_area > 652090;

यहाँ, आपको कुल 15 देश मिलते हैं जो या तो Asia में स्थित हैं या 1901 के बाद स्वतंत्र हुए हैं या जिनका क्षेत्रफल 652090 से अधिक है।

अब क्वेरी को AND वैरिएंट में बदलते हैं, जो अधिक प्रतिबंधात्मक है:

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901 AND surface_area > 652090;

इस मामले में आपको कुल दो देश मिलेंगे।

आप WHERE क्लॉज़ में सबक्वेरी भी जोड़ सकते हैं। मान लें कि आप उस देश का रिकॉर्ड प्राप्त करना चाहते हैं जिसका क्षेत्रफल सबसे अधिक है, लेकिन आप नहीं जानते कि किसी देश द्वारा प्राप्त अधिकतम क्षेत्रफल कितना है। ऐसी स्थिति में निम्न क्वेरी मदद कर सकती है:

SELECT * FROM countries WHERE surface_area in (SELECT MAX(surface_area) FROM countries);

आपको Russia का रिकॉर्ड मिलना चाहिए।

निष्कर्ष

बधाई हो, आपने यह ट्यूटोरियल पूरा कर लिया है। शर्तों के अनुरूप क्वेरी परिणामों को फ़िल्टर करना निश्चित रूप से एक महत्वपूर्ण कौशल है, और यह ट्यूटोरियल इसका परिचय था। यदि आप अपनी SQL कौशल को और निखारना चाहते हैं, तो आप हमारे कोर्स देख सकते हैं (नीचे लिंक)।


Sayak Paul's photo
Author
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 IS NULL;

क्या मैं WHERE क्लॉज़ में सबक्वेरी का उपयोग कर सकता/सकती हूँ?

हाँ, सबक्वेरी का उपयोग किसी कॉलम की तुलना किसी दूसरी क्वेरी के परिणाम से करने के लिए किया जा सकता है। उदाहरण के लिए:

SELECT * FROM countries WHERE surface_area = (SELECT MAX(surface_area) FROM countries);

WHERE क्लॉज़ FROM क्लॉज़ से पहले आता है या बाद में?

WHERE क्लॉज़ हमेशा FROM क्लॉज़ के बाद और GROUP BY या ORDER BY जैसी क्लॉज़ के पहले आता है।

क्या मैं WHERE को JOINs के साथ उपयोग कर सकता/सकती हूँ?

बिल्कुल। आप किसी JOIN के बाद संयुक्त परिणाम सेट को फ़िल्टर करने के लिए WHERE क्लॉज़ लागू कर सकते हैं।

विषय
डेटा विश्लेषण
डेटा साइंस
SQL

SQL पाठ्यक्रम

कोर्स

PostgreSQL में क्वेरी प्रदर्शन सुधारना

4 घंटा
14.1K
जानें कि अपने PostgreSQL क्वेरीज़ को कैसे संरचित करें ताकि वे बहुत कम समय में चलें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें
और देखेंRight Arrow