MySQL Select, from, where & order by
MySQL SELECT Statement
MySQL में SELECT statement data retrieve करने के लिए यूज़ किया जाता है। ये statement database table में से एक या एक से अधिक columns को select करता है और उसे user को show करता है। SELECT statement सबसे अधिक यूज़ होने वाला DML (Data Manipulation Language) statement होता है।
जब भी आपको database की किसी भी table के data को देखने की जरुरत होगी आप हमेशा SELECT statement यूज़ करेंगे। इस statement के साथ और भी clauses यूज़ किये जाते है जिनके बारे में आपको आगे बताया जायेगा। आइये अब SELECT statement के basic syntax के बारे में जानने का प्रयास करते है।
mysql > SELECT <options(* etc)>/<column-names> FROM table-name <options(ORDER BY etc)>
SELECT statement का syntax बहुत ही आसान है। सबसे पहले आप SELECT statement define करते है। इसके बाद आपके पास 2 choices होते है या तो आप कोई option define कर सकते है जैसे की * (all) या फिर आप जिन columns को show करना चाहते है उनका नाम define कर सकते है।
* (all)
Option यहाँ पर ज्यादातर * होता है जो की complete table को show करने के लिए यूज़ किया जाता है। इस symbol का मतलब all होता है और जब आप इसे यूज़ करते है तो आपकी पूरी table show हो जाती है। ये complete data को point करता है।
FROM Clause
ये clause एक table को define करने के लिए यूज़ किया जाता है। इस clause के through आप ये बताते है की किस table पर दिए गए statement को execute करना है। SELECT statement के case में इस clause के द्वारा ये बताया जाता है की आप किस table में से columns को show करना चाहते है। ये clause table के नाम से पहले आता है।
FROM clause के बाद में table का नाम define किया जाता है। Table के नाम के बाद के सभी clauses optional होते है। इन clauses के बारे में आपको आगे बताया जायेगा। आइये अब SELECT statement के यूज़ को एक उदाहरण के द्वारा समझने का प्रयास करते है।
उदाहरण के लिए मान लीजिये आपके database में आपने उपर दी गयी Employee table create की हुई है। और अब आप इस table में से data show करवाना चाहते है तो ऐसा आप इस प्रकार कर सकते है।
Selecting All Data
यदि आप इस table के complete data को show करना चाहते है तो इसके लिए आपको * यूज़ करना होगा। इसका उदाहरण निचे दिया जा रहा है।
mysql > select * from Employee;
जब उपर दी गयी query execute होती है तो Employee table की सभी rows show हो जाती है।
Selecting One Column
यदि आप किसी particular column से ही data show करना चाहते है तो इसके लिए आप SELECT statement के बाद उस column का नाम define करते है। उसके बाद FROM clause और table का नाम define करते है। इसका उदाहरण निचे दिया जा रहा है।
mysql > select Name from Employee;
ऊपर दी गयी query के execute होने पर Employee table के Name column की सभी values show होगी।
Selecting Two or More Columns
एक से अधिक columns select करने के लिए आप सभी columns के नामों को comma (,) से separate करते है। इसे नीचे उदाहरण के द्वारा समझाया गया है।
mysql > select Name,Salary from Employee;
उपर दिए गए statement के execute होने पर Employee table के Name और Salary columns की values show होंगी।
DISTINCT Clause
कई बार ऐसा होता है की जब आप SELECT statement को execute करते है तो results में data duplicate होता है। उदाहरण के लिए आप Employee table को select करते है और उसकी सभी rows को show करते है।
जब आप ऐसा करें तो हो सकता है की किन्हीं 2 rows की values same हो। ऐसा किसी भी column में हो सकता है। इसे duplicate data कहते है।
Data duplicate कई reasons से हो सकता है। उदाहरण के लिए यदि आप भूल से किसी employee की information 2 बार enter करवा दे आदि। यदि आप चाहते है की आपके result में duplicate data show ना हो तो इसके लिए आप DISTINCT clause यूज़ कर सकते है।
DISTINCT clause result में से सभी duplicate rows को remove कर देता है। Result में केवल वही row show होती है जो result में सबसे पहले आयी थी। बाकी next सभी duplicate rows eliminate कर दी जाती है।
DISTINCT clause को columns की list से पहले और SELECT statement के बाद में define किया जाता है। ये सभी rows को compare करता है और उसके बाद results show करता है। इसका उदाहरण नीचे दिया जा रहा है।
mysql > select distinct name from Employee;
उपर दिया गया statement execute होने पर Employee table में से unique employee names की list show करता है।
WHERE Clause
यदि आप data को किसी condition के base पर select करके show करवाना चाहते है तो इसके लिए आप WHERE clause यूज़ करते है। उदाहरण के लिए यदि आप सिर्फ उन ही employees की list देखना चाहते है जिनकी salary 20,000 से ज्यादा है तो ऐसा WHERE clause के द्वारा किया जा सकता है।
WHERE clause एक particular condition के base पर सभी rows को process करता है। ये condition table की हर row पर apply होती है। जिस row के लिए ये condition true होती है वह row fetch होकर result में show हो जाती है। जिन rows के लिए ये condition false होती है उन्हें result में show नहीं किया जाता है।
WHERE clause को table के नाम के बाद में define किया जाता है। इसके बाद वह condition लिखी जाती है जिस के base पर आप results show करना चाहते है। इस condition में आप operators का यूज़ करते है। इसका उदाहरण नीचे दिया जा रहा है।
mysql > select Name,Salary from Employee where Salary>20000;
उपर दिए गए उदाहरण में WHERE clause के द्वारा Employee table में से उन employees का नाम और salary show की जा रही है जिनकी salary 20,000 से ज्यादा है।
ORDER BY Clause
जब भी कोई MySQL statement execute होता है तो उसका result show होता है। लेकिन ये result किसी particular order में नहीं होता है। जो rows statement के लिए true होती है वो एक के बाद एक return कर दी जाती है।
उदाहरण के लिए यदि आप Employee table से employees के नामों की list चाहते है तो नाम आपने जिस order में insert करवाये थे उसी order में show होंगे। लेकिन यदि आप चाहते है की सभी नाम alphabet order में show हो (a के बाद b और उसके बाद c से start होने वाले नाम) तो इसके लिए आप statement में ORDER BY clause यूज़ कर सकते है।
ORDER BY clause का basic syntax निचे दिया जा रहा है।
mysql > SELECT <column-name> FROM <table-name> ORDER BY <column-name> <option>
उपर दिए गए syntax में option ascending और descending होते है। यदि आप कोई option यूज़ नहीं करते है तो by default result ascending order में show होता है। यदि आप result को descending order में show करना चाहते है तो आप desc option यूज़ कर सकते है।
आइये अब ORDER BY clause को एक उदाहरण के माध्यम से समझने का प्रयास करते है।
mysql > select Name from Employee ORDER BY Name;
उपर दिए गए statement में Employee table से Name column की values को show किया जा रहा है। ये सभी values ascending order में show होंगी। यदि आप किसी particular column को show ना करके पूरी table के data को show करते है तो सभी rows Name column के according ascending order में show होगी।
Rows को descending order में आप इस प्रकार show कर सकते है।
mysql > select Name from Employee ORDER BY Name desc;