MySQL WHERE क्लॉज़: AND, OR, IN, NOT IN क्वेरी उदाहरण

⚡ स्मार्ट सारांश

MySQL WHERE क्लॉज़, SELECT, UPDATE और DELETE स्टेटमेंट्स पर सटीक मानदंड लागू करते हुए, परिणाम सेट तक पहुँचने से पहले ही पंक्तियों को फ़िल्टर करता है। AND, OR, IN, NOT IN और तुलना ऑपरेटरों को समझने से शुरुआती लोगों को क्वेरी द्वारा आवश्यक सटीक रिकॉर्ड प्राप्त करने में मदद मिलती है।

  • 🔍 मूल मकसद: WHERE क्लॉज़ यह सीमित करता है कि कोई स्टेटमेंट किन पंक्तियों को प्रभावित करेगा, इसलिए SELECT, UPDATE और DELETE केवल मेल खाने वाली पंक्तियों को ही प्रभावित करते हैं।
  • 🔗 और Operaटोर: पंक्तियाँ तभी वापस की जाती हैं जब सभी शर्तें सही साबित होती हैं, जिससे परिणाम सेट सीमित हो जाता है।
  • 🔀 OR Operaटोर: जब कोई एक शर्त सही साबित होती है, तो पंक्तियाँ वापस की जाती हैं, जिससे परिणाम सेट का विस्तार होता है।
  • ???? अंदर और बाहर: IN कीवर्ड एक एक्सप्रेशन में मौजूद मानों की सूची से मेल खाता है, जबकि NOT IN उसी सूची को बाहर रखता है।
  • ️ तुलना Operaटोर्स: बराबर (=), से बड़ा (>), से छोटा (<) और बराबर नहीं (<>) के आधार पर संख्यात्मक, पाठ और दिनांक कॉलम को फ़िल्टर किया जाता है।
  • ⚠️ NULL हैंडलिंग: NULL कभी भी = या <> से मेल नहीं खाता, इसलिए लुप्त मानों की जांच के लिए IS NULL और IS NOT NULL आवश्यक हैं।

WHERE क्लॉज क्या है? MySQL?

कहां कारण in MySQL एक कीवर्ड है जिसका उपयोग डेटा या पंक्तियों के सटीक मानदंड को निर्दिष्ट करने के लिए किया जाता है जो निर्दिष्ट SQL कथन से प्रभावित होंगे। WHERE क्लॉज का उपयोग SQL कथनों जैसे INSERT, UPDATE, SELECT और DELETE के साथ रिकॉर्ड को फ़िल्टर करने और डेटा पर विभिन्न ऑपरेशन करने के लिए किया जा सकता है।

हमने देखा कि डेटा को कैसे क्वेरी किया जाए डेटाबेस पिछले ट्यूटोरियल में दिए गए SELECT कथन का उपयोग करके। SELECT कथन ने क्वेरी किए गए डेटाबेस टेबल से सभी परिणाम लौटाए।

हालांकि, कई बार हमें क्वेरी परिणामों को किसी विशिष्ट शर्त तक सीमित करना होता है। SQL में WHERE क्लॉज़ ऐसी स्थितियों में बहुत उपयोगी होता है, और यह उसी तरह काम करता है जैसे किसी अन्य क्वेरी में। डिलीट या अपडेट क्वेरी जैसा कि यह एक SELECT क्वेरी में करता है।

WHERE क्लॉज MySQL

WHERE क्लॉज सिंटैक्स

WHERE क्लॉज़ का मूल सिंटैक्स इस प्रकार है।

SELECT * FROM tableName WHERE condition;

यहाँ

  • “टेबलनाम से * का चयन करें” मानक है चयन कथन
  • "कहाँ" यह वह कीवर्ड है जो परिणाम सेट को प्रतिबंधित करता है, और "स्थिति" यह परिणामों पर लागू किया गया फ़िल्टर है। फ़िल्टर एक रेंज, एक एकल मान या एक उप-क्वेरी हो सकता है।

मान लीजिए कि हमें सदस्यों की तालिका से किसी सदस्य का विवरण चाहिए, जिसकी सदस्यता संख्या 1 है। नीचे दिया गया स्क्रिप्ट यही कार्य करता है।

SELECT * FROM `members` WHERE `membership_number` = 1;

इस स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र “myflixdb” पर नीचे दिया गया परिणाम प्राप्त होता है।

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

एक ही शर्त अक्सर पर्याप्त नहीं होती। नीचे दिए गए अनुभाग WHERE को इसके साथ जोड़ते हैं। लॉजिकल ऑपरेटर्स.

WHERE क्लॉज को – के साथ संयुक्त किया गया और तार्किक Operaटो

AND लॉजिकल ऑपरेटर के साथ, एक पंक्ति तभी वापस की जाती है जब सभी निर्दिष्ट मानदंड पूरे होते हैं।

मान लीजिए कि हम श्रेणी 2 की वे सभी फिल्में चाहते हैं जो 2008 में रिलीज हुई थीं। नीचे दी गई स्क्रिप्ट यही काम करती है।

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

उपरोक्त स्क्रिप्ट को “myflixdb” के विरुद्ध निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है।

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

AND परिणाम समूह को संकुचित करता है। OR इसे विस्तृत करता है।

WHERE क्लॉज को – के साथ संयुक्त किया गया OR तार्किक Operaटो

OR ऑपरेटर के साथ, यदि निर्दिष्ट मानदंडों में से कोई भी पूरा होता है तो एक पंक्ति वापस की जाती है।

निम्नलिखित स्क्रिप्ट श्रेणी 1 या श्रेणी 2 में आने वाली सभी फिल्मों को प्राप्त करती है।

SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

परिणाम नीचे दिखाया गया है।

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

कई OR शर्तों को एक साथ जोड़ने से पढ़ना मुश्किल हो जाता है। IN कीवर्ड इस समस्या को हल करता है।

WHERE क्लॉज को – के साथ संयुक्त किया गया IN खोजशब्द

WHERE क्लॉज़, जब IN कीवर्ड के साथ प्रयोग किया जाता है, तो केवल उन्हीं पंक्तियों को प्रभावित करता है जिनके मान दी गई सूची से मेल खाते हैं। IN का उपयोग करने से OR क्लॉज़ की संख्या कम हो जाती है जो अन्यथा आपको लिखनी पड़ती।

निम्नलिखित MySQL WHERE IN क्वेरी उन पंक्तियों को दर्शाती है जहां membership_number या तो 1, 2 या 3 है।

SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

परिणाम नीचे दिखाया गया है।

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

NOT IN विपरीत फ़िल्टर का कार्य करता है।

WHERE क्लॉज को – के साथ संयुक्त किया गया अंदर नही खोजशब्द

NOT IN कीवर्ड के साथ, WHERE क्लॉज़ उन सभी पंक्तियों को बाहर कर देता है जिनका मान दी गई सूची से मेल खाता है।

निम्नलिखित क्वेरी उन पंक्तियों को दर्शाती है जहां membership_number 1, 2 या 3 नहीं है।

SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

परिणाम नीचे दिखाया गया है।

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE तुलना ऑपरेटरों का उपयोग करके आकार और समानता के आधार पर मानों को फ़िल्टर भी करता है।

WHERE क्लॉज को – के साथ संयुक्त किया गया तुलना Operaमरोड़

कम (<), बराबर (=), अधिक (>) और बराबर नहीं (<>) तुलना ऑपरेटरों का उपयोग WHERE क्लॉज़ के साथ किया जा सकता है।

= के बराबर

निम्नलिखित स्क्रिप्ट समान तुलना ऑपरेटर का उपयोग करके सदस्य तालिका से सभी महिला सदस्यों को प्राप्त करती है।

SELECT * FROM `members` WHERE `gender` = 'Female';

परिणाम नीचे दिखाया गया है।

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> से अधिक

निम्नलिखित स्क्रिप्ट भुगतान तालिका से 2,000 से अधिक सभी भुगतान प्राप्त करती है।

SELECT * FROM `payments` WHERE `amount_paid` > 2000;

परिणाम नीचे दिखाया गया है।

payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

बराबर नहीं

निम्नलिखित स्क्रिप्ट उन सभी फिल्मों को प्राप्त करती है जिनकी श्रेणी आईडी 1 नहीं है।

SELECT * FROM `movies` WHERE `category_id` <> 1;

परिणाम नीचे दिखाया गया है।

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

त्वरित संदर्भ: WHERE खंड Operaमरोड़

WHERE के साथ सबसे अधिक बार उपयोग किए जाने वाले ऑपरेटरों का सारांश नीचे दिया गया है। पूर्ण परिभाषाएँ आगे दी गई हैं। MySQL ऑपरेटर संदर्भ.

Operaटो अर्थ उदाहरण स्थिति
= के बराबर `लिंग` = 'महिला'
<> बराबर नही है `category_id` <> 1
> / से अधिक / से कम `भुगतान की गई राशि` > 2000
और / या सभी मानदंड / कोई भी मानदंड `category_id` = 2 AND `year_released` = 2008
में / में नहीं मिलान/बहिष्करण सूची `सदस्यता_संख्या` IN (1,2,3)
शून्य है / शून्य नहीं है लुप्त मानों के लिए परीक्षण `डाक पता` शून्य है

⚠️ नोट: NULL कभी भी = या <> से मेल नहीं खाता। जब किसी कॉलम में कोई मान न हो, तो IS NULL या IS NOT NULL का उपयोग करें।

दिमागी पहेली: देर से लौटाई गई फिल्मों को ढूंढें

मान लीजिए कि हम उन किराए पर ली गई फिल्मों को देखना चाहते हैं जिन्हें 25/06/2012 की अंतिम तिथि तक वापस नहीं किया गया था। WHERE को 'लेस दैन' ऑपरेटर और AND के साथ मिलाकर यह लक्ष्य प्राप्त किया जा सकता है।

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र निम्नलिखित परिणाम देता है।

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0

अक्सर पूछे जाने वाले प्रश्न

WHERE फ़िल्टर समूह बनाने से पहले व्यक्तिगत पंक्तियों को फ़िल्टर करता हैpingइसलिए यह एग्रीगेट फ़ंक्शंस को संदर्भित नहीं कर सकता। HAVING फ़िल्टर GROUP BY चलने के बाद ग्रुप बनाते हैं, जिससे यह COUNT(*) > 5 जैसी शर्तों के लिए सही जगह बन जाता है।

IS NULL या IS NOT NULL का प्रयोग करें। Opera= और <> जैसे टॉर्स NULL के लिए अज्ञात मान लौटाते हैं, इसलिए `postal_address` = NULL किसी से मेल नहीं खाता, जबकि `postal_address` IS NULL काम करता है।

हां, जब फ़िल्टर किए गए कॉलम को इंडेक्स किया जाता है, MySQL यह तालिका को स्कैन करने के बजाय केवल मिलान वाली पंक्तियों को पढ़ता है।ping किसी फ़ंक्शन में एक कॉलम, जैसे कि YEAR(`date_of_birth`) = 1980, इंडेक्स के उपयोग को रोकता है।

हाँ। एआई सहायक साधारण अंग्रेजी को एसक्यूएल में बदल देते हैं, और MySQL कार्यक्षेत्र परिणाम चलाया जा सकता है। Revप्रत्येक स्थिति को अपने स्कीमा के अनुसार देखें, क्योंकि मॉडल कॉलम के नाम मनगढ़ंत बना सकता है।

पहले SELECT का उपयोग करके इसका परीक्षण करें। गलत WHERE क्लॉज़ का प्रयोग करने से समस्या उत्पन्न हो सकती है। डिलीट या अपडेट क्वेरी प्रत्येक पंक्ति को बदला जा सकता है। मिलान की गई पंक्तियों का पूर्वावलोकन करें, फिर लिखने के लिए उसी शर्त का पुनः उपयोग करें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: