Theory
मुझे सब कुछ मत दो
SELECT * FROM sales हर row उगल देता है। पर Meera को शायद ही कभी सब कुछ चाहिए, उसे '50 से कम की groceries' चाहिए, या 'S से शुरू होने वाले items', या 'price से sort की हुई list'।
वह चुनना ही WHERE clause और उसके साथी हैं। यहीं SELECT एक data dump होना बंद करता है और एक सवाल बन जाता है।
और आप यह idea पहले मिल चुके हैं: WHERE ठीक Unit 2 का Filter है और ORDER BY ठीक उसका Sort, अब click के बजाय typed। यहाँ दुकान की table फिर से नज़र में रखने को।
Practical
The sales table (keep this in mind)
-- id | item | category | price | qty
-- 1 | Sugar | Grocery | 45 | 20
-- 2 | Tea | Beverage | 120 | 15
-- 3 | Rice | Grocery | 60 | 30
-- 4 | Soap | Personal | 35 | 25
-- 5 | Milk | Dairy | 30 | 40
SELECT item, price FROM sales
WHERE category = 'Grocery' AND price < 50;
-- returns: Sugar 45This example runs in Gri-Learn on the web, where you can edit it and see the output.
At a glance
WHERE operators
| Operator | अर्थ | उदाहरण |
|---|---|---|
| =, >, <, >=, <=, <> | तुलना | price > 40 |
| IN (a, b) | list में किसी से मेल | category IN ('Grocery','Dairy') |
| BETWEEN a AND b | एक range में (inclusive) | price BETWEEN 30 AND 60 |
| LIKE 'S%' | Pattern मेल (% और _) | item LIKE 'S%' |
| NOT IN (a, b) | एक list को छोड़ता है | category NOT IN ('Personal') |
Theory
LIKE और wildcards
LIKE text patterns को दो wildcards से मिलाता है:
- `%` किसी भी क्रम के characters के लिए (शून्य समेत)।
- `_` ठीक एक character के लिए।
तो item LIKE 'S%' Sugar और Soap से मेल खाता है (S से शुरू)। item LIKE '%a' किसी भी 'a' पर ख़त्म होने वाले से मेल खाता है। item LIKE 'T__' 'Tea' से मेल खाता है (T + ठीक दो और)।
यों ही आप 'से शुरू होने वाले names', 'शामिल करने वाले', 'पर ख़त्म होने वाले' खोजते हैं, SQL का pattern-matching घोड़ा। % (कई) बनाम _ (एक) सीधा रखना एक पक्का मार्क है।
Theory
नतीजे को आकार देना: ORDER BY, DISTINCT, GROUP BY
rows छानने के आगे, तीन clauses output को आकार देते हैं:
- ORDER BY sort करता है:
ORDER BY price DESC(सबसे ऊँचा पहले; ASC default है)। - DISTINCT duplicate values हटाता है:
SELECT DISTINCT category FROM salesहर category एक बार सूचीबद्ध करता है। - GROUP BY एक value साझा करती rows को groups में समेटता है, per-group summaries के लिए aggregate functions के साथ इस्तेमाल:
SELECT category, SUM(qty) FROM sales GROUP BY categoryकुल मात्रा per category देता है।
WHERE rows चुनता है; GROUP BY उन्हें बाँधता है; ORDER BY उन्हें व्यवस्थित करता है; DISTINCT उन्हें dedupe करता है।
Quiz
sales table में WHERE item LIKE 'S%' किन items से मेल खाता है?
- Sugar और Soap (S से शुरू होने वाले names)
- सिर्फ Sugar (exact मेल)
- S अक्षर वाले सारे items
- Tea और Rice
Show the answer
Sugar और Soap (S से शुरू होने वाले names)
'S%' का मतलब 'S के बाद कोई भी characters', तो यह हर item name से मेल खाता है जो S से शुरू होता है: Sugar और Soap। जिन names में S कहीं भी हो उनसे मेल खाने को आप '%S%' लिखते; एक exact एक-अक्षर-जमा-दो के लिए _ इस्तेमाल करते। % (कोई क्रम) बनाम _ (एक character) फ़र्क़ सबसे ज़्यादा पूछा जाने वाला LIKE तथ्य है।
Think first
BETWEEN inclusive है
Meera SELECT item FROM sales WHERE price BETWEEN 30 AND 60 चलाती है। table को देखते हुए (prices 45, 120, 60, 35, 30), कौन से items वापस आते हैं? सीमाओं पर ध्यान से नज़र रखिए।
Show the answer
Sugar (45), Rice (60), Soap (35), Milk (30), चार items। BETWEEN inclusive है, तो 30 और 60 दोनों शामिल हैं (Milk ठीक 30 पर और Rice ठीक 60 पर दोनों योग्य)। सिर्फ Tea (120) छूटता है। Students अक्सर गलत मानते हैं कि BETWEEN endpoints छोड़ता है, यह उन्हें शामिल करता है, जो एक क्लासिक exam पकड़ है।
Watch out
Marks कहाँ कटते हैं
LIKE wildcards: `%` = कितनी भी संख्या के characters, `_` = ठीक एक, इन्हें मत बदलिए। BETWEEN दोनों सिरों का inclusive है। बराबर-नहीं `<>` (या !=) लिखा जाता है। Text values को quotes चाहिए ('Grocery'), numbers को नहीं। और GROUP BY rows को aggregates के लिए group करता है, यह ORDER BY (जो सिर्फ sort करता है) जैसा नहीं। सटीक operator इस्तेमाल वहाँ है जहाँ SQL marks जीते या हारे जाते हैं।
Theory
आपने यह Unit 1 में click किया था
जुड़ाव महसूस कीजिए: WHERE वह Filter है जो आपने Unit 2 में tick किया, ORDER BY Sort है, GROUP BY Consolidate है, और DISTINCT Remove Duplicates है। जो कुछ आपने Excel में माउस से किया, अब आप सटीक typed commands से करते हैं जो लाखों rows तक बढ़ते हैं। यही spreadsheets पर databases का पूरा वादा है। अगला lesson: AND, OR, EXISTS से conditions जोड़ना, और aliases से चीज़ों को नाम देना।
Summary
Key takeaways
- WHERE rows को एक condition से छानता है =, >, <, <>, IN, BETWEEN, LIKE, NOT IN का इस्तेमाल करते हुए।
- LIKE patterns मिलाता है: % = characters का कोई क्रम, _ = ठीक एक character।
- BETWEEN a AND b दोनों endpoints का INCLUSIVE है।
- ORDER BY sort करता है (ASC default, DESC ऊँचे-से-नीचे); DISTINCT duplicate values हटाता है।
- GROUP BY एक value साझा करती rows को per-group summaries के लिए groups में समेटता है।
- याद रखने का hook: WHERE = Excel Filter, ORDER BY = Sort, GROUP BY = Consolidate, अब typed।