Free tutorials & notes in Hindi & English · Clean code examples · Mobile friendly learning
MySQL + SQL · Lesson 45

SELECT Command

SELECT क्या करता है

SELECT MySQL से result set बनाने को कहता है। यह stored columns पढ़ सकता, expressions calculate कर सकता, tables जोड़ सकता, rows filter कर सकता, groups बना सकता और final output sort कर सकता है। Basic SELECT read-only होता है; वह पढ़ी हुई rows नहीं बदलता।

Reproducible setup: lesson में INSERT lesson के चार students हैं: Aarav 86.50, Meera 91.00, Kabir 74.00 और Sana 88.50।

सबसे छोटा valid SELECT table के बिना भी चल सकता है:

SELECT 2 + 3 AS answer,
       CURRENT_DATE AS today;
Result answer | today 5 | current server date

Table data के लिए common form SELECT columns FROM table है।

SELECT Syntax और Columns चुनना

SELECT student_id, full_name, marks
FROM students
ORDER BY student_id;
Result student_id | full_name | marks 1 | Aarav | 86.50 2 | Meera | 91.00 3 | Kabir | 74.00 4 | Sana | 88.50

केवल वही columns माँगें जो user या application को चाहिए। Result में column order select list के अनुसार होता है, table definition के अनुसार होना जरूरी नहीं।

SELECT *
FROM students;

* सभी columns माँगता है। Small table explore करने में useful है, लेकिन production API और report में explicit columns transfer घटाते, stable output contract बचाते और code review में intent बताते हैं।

Aliases और Calculated Expressions

SELECT item column, constant, function या expression हो सकता है। AS output को readable label देता है; stored column rename नहीं करता।

SELECT
  full_name AS student_name,
  marks,
  ROUND(marks / 100 * 5, 2) AS score_out_of_5
FROM students
ORDER BY student_id;
Result student_name | marks | score_out_of_5 Aarav | 86.50 | 4.33 Meera | 91.00 | 4.55 Kabir | 74.00 | 3.70 Sana | 88.50 | 4.43

NULL वाले expression का result अक्सर NULL होता है। किसी report में missing marks unknown रहें या COALESCE से replace हों, यह business rule से तय करें। Missing result को बिना कारण zero न बनाएँ।

DISTINCT से Unique Values

SELECT DISTINCT class_name
FROM students
ORDER BY class_name;
Result class_name X-A X-B

DISTINCT selected expressions के complete combination पर लागू होता है। SELECT DISTINCT class_name, status में row तभी duplicate है जब दोनों values match करें। यह table में unintended duplicate data सुधारने का substitute नहीं है।

आवश्यकताचुनें
Displayed selected values की duplicate rows हटानाDISTINCT
हर class का count, average या total निकालनाAggregate functions के साथ GROUP BY
Stored duplicate values रोकनाPRIMARY KEY या UNIQUE constraint

Result Filter, Sort और Limit करें

SELECT student_id, full_name, marks
FROM students
WHERE status = 'Active' AND marks >= 80
ORDER BY marks DESC, student_id ASC
LIMIT 2;
Result student_id | full_name | marks 2 | Meera | 91.00 4 | Sana | 88.50
  • WHERE केवल matching rows रखता है।
  • ORDER BY marks DESC higher marks पहले रखता है।
  • student_id ASC ties को deterministic बनाता है।
  • LIMIT 2 filtering और ordering के बाद अधिकतम दो rows देता है।

ORDER BY के बिना row order guaranteed नहीं है। Index, नया data, execution plan या server version observed order बदल सकते हैं। Ranges, lists, patterns और NULL tests के लिए WHERE और operators lesson पढ़ें।

Clauses लिखने और समझने का क्रम

मुख्य clauses इस order में लिखें:

SELECT [DISTINCT] select_list
FROM table_source
WHERE row_condition
GROUP BY grouping_columns
HAVING group_condition
ORDER BY sort_expressions
LIMIT row_count;

Useful conceptual model: FROM rows पहचानता, WHERE filter करता, GROUP BY groups बनाता, HAVING groups filter करता, SELECT expressions बनाता, DISTINCT duplicate result rows हटाता, ORDER BY sort और LIMIT output छोटा करता है। Optimizer semantics बचाते हुए physical work अलग order में कर सकता है।

Alias consequence: WHERE select list बनने से पहले conceptually filter करता है, इसलिए select-list alias सामान्यतः WHERE में unavailable है। ORDER BY उस alias को use कर सकता है।

Best Practices और अभ्यास

  • केवल needed columns और rows लौटाएँ।
  • Join में ambiguous names हों तो table aliases से columns qualify करें।
  • Calculated fields को meaningful aliases दें।
  • LIMIT या pagination से पहले deterministic ORDER BY जोड़ें।
  • Untrusted text SQL में न जोड़ें; prepared statement में bind करें।
  • Correctness के बाद measured performance problem पर EXPLAIN और indexes लें।
  1. Active students को full name से alphabetically list करें।
  2. Top three marks दिखाएँ और tie student_id से resolve करें।
  3. DISTINCT से हर class एक बार लौटाएँ।
  4. Marks को percentage alias दें और बताएँ क्या table बदली।
  5. हर query चलाने से पहले result predict करें।

त्वरित सारांश

  • SELECT stored rows बदले बिना result set बनाता है।
  • Explicit column list SELECT * से अधिक stable है।
  • Aliases output label और expressions calculated values देते हैं।
  • DISTINCT duplicate selected combinations हटाता है।
  • WHERE filter, ORDER BY sort और LIMIT count घटाता है; deterministic limit के लिए ordering चाहिए।

Official संदर्भ

References 14 August 2026 को review किए गए। Results ऊपर दिखाए exact four-row dataset पर आधारित हैं।

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

MySQL में SELECT क्या करता है?
SELECT tables, views या expressions से result set पढ़ता है। Separate locking या data-changing operation के बिना यह stored rows नहीं बदलता।
क्या production code में SELECT * उपयोग करना चाहिए?
इसे quick exploration तक सीमित रखें। Stable application query में required columns लिखें, ताकि transfer कम हो, intent स्पष्ट रहे और schema बढ़ने पर unexpected output न आए।
DISTINCT और GROUP BY में क्या अंतर है?
DISTINCT selected expressions की duplicate result rows हटाता है। GROUP BY groups बनाता है, सामान्यतः aggregate functions से हर group का result निकालने के लिए। कभी output समान हो सकता है पर intent अलग है।
क्या LIMIT निश्चित rows की guarantee देता है?
नहीं। LIMIT count घटाता है, पर deterministic subset के लिए ऐसा ORDER BY चाहिए जो ties भी resolve करे, जैसे marks DESC, student_id ASC।
क्या SELECT alias को WHERE में उपयोग कर सकते हैं?
Select-list alias सामान्यतः WHERE में उपलब्ध नहीं होता, क्योंकि row filtering select list से पहले resolve होती है। Expression दोहराएँ, derived table/CTE लें या semantics सही हो तो HAVING उपयोग करें।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.