Theory
एक से ज़्यादा condition
Meera के सवाल और समृद्ध होते हैं: 'groceries जो साथ ही सस्ती हों', या 'Dairy या Beverage में कुछ भी'। एक condition काफ़ी नहीं; उसे उन्हें जोड़ना है।
वह है AND और OR, और आप उनका बर्ताव पहले से पूरी तरह जानते हैं, वे BCA102 truth tables और Unit 2 के Excel IF वाले वही AND/OR हैं। AND सख़्त वाला है, OR उदार वाला।
यह lesson conditions जोड़ता है, EXISTS पर झाँकता है (जाँचना कि मेल खाती rows मौजूद हैं या नहीं), और चीज़ों को पठनीय उपनाम देता है aliases से। पुराना logic, नया syntax।
Theory
सख़्त list और उदार list
एक शादी का न्योता कहता है 'परिवार और Surat में रहते हों', एक सख़्त filter, दोनों होने चाहिए, तो मेहमानों की list सिकुड़ती है। इसे 'परिवार या दोस्त' कीजिए, एक उदार filter, कोई एक योग्य, तो list बढ़ती है। AND सँकरा करता है, OR चौड़ा करता है। ठीक BCA102 का truth-table बर्ताव: AND सिर्फ तब सही जब सारे inputs सही हों; OR तब सही जब कोई एक हो।
Practical
AND narrows, OR widens
-- AND: both must hold (narrows)
SELECT item FROM sales
WHERE category = 'Grocery' AND price < 50;
-- returns: Sugar
-- OR: either will do (widens)
SELECT item FROM sales
WHERE category = 'Dairy' OR category = 'Beverage';
-- returns: Tea, Milk
-- Alias: a readable nickname
SELECT item AS product, price AS cost FROM sales;This example runs in Gri-Learn on the web, where you can edit it and see the output.
Theory
Precedence, EXISTS, और aliases
- Precedence: AND, OR से ज़्यादा कसकर बँधता है, तो
A OR B AND Cका मतलबA OR (B AND C)। शक हो तो parentheses इस्तेमाल कीजिए ठीक वही कहने को जो आपका मतलब है। - EXISTS (subquery): सही अगर अंदरूनी query कोई row लौटाए; NOT EXISTS सही अगर वह कोई नहीं लौटाए। मौजूदगी जाँचने को: 'वे categories जिनमें 100 से ऊपर कम से कम एक item हो'।
- Alias (
AS): एक column (price AS cost) या table (FROM sales AS s) के लिए एक अस्थायी उपनाम। यह output को पठनीय बनाता है और तब ज़रूरी है जब एक query किसी table को दो बार संदर्भित करे।ASkeyword वैकल्पिक है (sales sभी चलता है)।
Quiz
sales table को देखते हुए (groceries: Sugar 45, Rice 60), WHERE category = 'Grocery' AND price > 100 कितनी rows लौटाता है?
- शून्य, कोई grocery 100 से ऊपर नहीं, और AND को दोनों सही चाहिए
- दो, दोनों groceries मेल खाते हैं
- एक, Rice क़रीब है
- पाँच, सारी rows
Show the answer
शून्य, कोई grocery 100 से ऊपर नहीं, और AND को दोनों सही चाहिए
AND को दोनों conditions सही चाहिए। groceries (Sugar 45, Rice 60) सचमुच groceries हैं, पर कोई भी 100 से ऊपर नहीं, तो price condition विफल होती है और AND शून्य rows देता है। अगर यह OR होता, तो यह सारी groceries जमा 100 से ऊपर कुछ भी (Tea) लौटाता। AND सख़्त overlap तक सँकरा करता है, ठीक BCA102 का AND truth table।
Think first
Parentheses जोड़िए
Meera लिखती है WHERE category = 'Grocery' OR category = 'Dairy' AND price < 40. क्योंकि AND ज़्यादा कसकर बँधता है, SQL इसे असल में कैसे पढ़ता है, और क्या यह वही है जो उसका शायद मतलब था?
Show the answer
SQL इसे category = 'Grocery' OR (category = 'Dairy' AND price < 40) के रूप में पढ़ता है, AND पहले group होता है। तो यह सारी groceries (कोई भी price) जमा सिर्फ सस्ती dairy लौटाता है। Meera का शायद मतलब था 'groceries या dairy, दोनों 40 से कम', जिसे स्पष्ट parentheses चाहिए: (category='Grocery' OR category='Dairy') AND price < 40। यह precedence झमेला ठीक वजह है कि आप मिली-जुली AND/OR को हमेशा parenthesise करते हैं।
Watch out
Marks कहाँ कटते हैं
यह भूलना कि AND, OR से ज़्यादा कसकर बँधता है, बिना parentheses मिली-जुली conditions गलत पढ़ी जाती हैं (ऊपर का क्लासिक जाल)। AND (सँकरा, सारे सही) को OR (चौड़ा, कोई एक सही) से गड्डमड्ड करना। यह सोचना कि EXISTS data लौटाता है, यह true/false लौटाता है (कोई मेल खाती row मौजूद है क्या?)। और यह चूकना कि एक alias बस एक उपनाम है (AS वैकल्पिक) जो store किया data नहीं बदलता। मिले-जुले logic को parenthesise कीजिए, हमेशा।
Theory
वही logic, तीसरी बार
उपस्थितियाँ गिनिए: AND/OR truth tables (BCA102), Excel IF-AND-OR (Unit 2), और अब SQL WHERE (Unit 4)। जब एक idea गणित, spreadsheets और databases में बार-बार आता है, तो वह बुनियाद है, एक बार अपना लीजिए, हमेशा इस्तेमाल कीजिए। अगले lessons SELECT को summarise करवाते हैं: aggregate functions (SUM, AVG, COUNT, MAX, MIN) जो कई rows को एक जवाब में बदलती हैं, और scalar functions जो हर value को बदलती हैं।
Summary
Key takeaways
- AND को दोनों conditions सही चाहिए (नतीजे को सँकरा करता है); OR को कम से कम एक (चौड़ा करता है)।
- AND, OR से ज़्यादा कसकर बँधता है, मिली-जुली conditions नियंत्रित करने को parentheses इस्तेमाल कीजिए।
- EXISTS (subquery) सही है अगर subquery कोई row लौटाए; NOT EXISTS अगर वह कोई नहीं लौटाए।
- एक alias (AS) एक column या table को पठनीय उपनाम देता है; AS वैकल्पिक है।
- यह वही AND/OR logic है जो BCA102 truth tables और Excel IF का है।
- याद रखने का hook: AND सख़्त मेहमान-list है (सिकुड़ती), OR उदार वाली (बढ़ती)।