SELECT Command
SELECT क्या करता है
SELECT MySQL से result set बनाने को कहता है। यह stored columns पढ़ सकता, expressions calculate कर सकता, tables जोड़ सकता, rows filter कर सकता, groups बना सकता और final output sort कर सकता है। Basic SELECT read-only होता है; वह पढ़ी हुई rows नहीं बदलता।
सबसे छोटा valid SELECT table के बिना भी चल सकता है:
SELECT 2 + 3 AS answer,
CURRENT_DATE AS today;
Table data के लिए common form SELECT columns FROM table है।
SELECT Syntax और Columns चुनना
SELECT student_id, full_name, marks
FROM students
ORDER BY student_id;
केवल वही 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;
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;
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;
WHEREकेवल matching rows रखता है।ORDER BY marks DESChigher marks पहले रखता है।student_id ASCties को deterministic बनाता है।LIMIT 2filtering और 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 में कर सकता है।
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 लें।
- Active students को full name से alphabetically list करें।
- Top three marks दिखाएँ और tie student_id से resolve करें।
- DISTINCT से हर class एक बार लौटाएँ।
- Marks को
percentagealias दें और बताएँ क्या table बदली। - हर 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 संदर्भ
- SELECT Statement — MySQL 8.4
- SELECT ... INTO Statement
- Column Aliases की समस्याएँ
- LIMIT Query Optimization
References 14 August 2026 को review किए गए। Results ऊपर दिखाए exact four-row dataset पर आधारित हैं।