💻
⌨️
🖱️
🖥️
💾
← डैशबोर्ड पर वापस जाएँ
Font Size:

1. परिचय

MySQL क्वेरीज़ में हम SELECT कथन की उन्नत विशेषताओं का अध्ययन करेंगे। SELECT SQL का सबसे महत्वपूर्ण कथन है जिससे डेटा को विभिन्न प्रकार से खोजा, फ़िल्टर किया, क्रमबद्ध किया और समूहीकृत किया जाता है। इस अध्याय में हम WHERE, ORDER BY, GROUP BY, HAVING, LIKE, BETWEEN, IN, एग्रीगेट फलन, JOIN और सबक्वेरी के बारे में विस्तार से सीखेंगे। ये सभी वास्तविक दुनिया के डेटाबेस प्रश्नों को हल करने में आवश्यक होते हैं।

2. WHERE क्लॉज़ और तुलना संचालक

WHERE क्लॉज़ पंक्तियों को शर्त के आधार पर फ़िल्टर करता है। इसमें तुलना संचालकों का उपयोग होता है:

SELECT * FROM छात्र WHERE अंक > 80;
SELECT * FROM छात्र WHERE अंक >= 80 AND अंक <= 90;
SELECT * FROM छात्र WHERE शहर = 'दिल्ली' OR शहर = 'मुंबई';
SELECT * FROM छात्र WHERE शहर != 'दिल्ली';

तुलना संचालक: =, >, <, >=, <=, <> (या !=)।

तार्किक संचालक: AND, OR, NOT

3. LIKE, BETWEEN और IN

SELECT * FROM छात्र WHERE नाम LIKE 'रा%';
SELECT * FROM छात्र WHERE नाम LIKE '%ता';
SELECT * FROM छात्र WHERE नाम LIKE '_म';
SELECT * FROM छात्र WHERE अंक BETWEEN 80 AND 90;
SELECT * FROM छात्र WHERE शहर IN ('दिल्ली', 'मुंबई');

4. ORDER BY (क्रमबद्धता)

परिणामों को किसी स्तंभ के आधार पर क्रमबद्ध करने के लिए ORDER BY का उपयोग होता है:

SELECT * FROM छात्र ORDER BY अंक;
SELECT * FROM छात्र ORDER BY अंक DESC;
SELECT * FROM छात्र ORDER BY शहर, अंक DESC;

5. एग्रीगेट फलन (Aggregate Functions)

एग्रीगेट फलन पंक्तियों के समूह पर कार्य करके एकल मान लौटाते हैं:

SELECT COUNT(*) FROM छात्र;
SELECT SUM(अंक) FROM छात्र;
SELECT AVG(अंक) FROM छात्र;
SELECT MAX(अंक) FROM छात्र;
SELECT MIN(अंक) FROM छात्र;

6. GROUP BY और HAVING

GROUP BY पंक्तियों को समूहों में विभाजित करता है और प्रत्येक समूह पर एग्रीगेट फलन लागू होता है:

SELECT शहर, COUNT(*), AVG(अंक)
FROM छात्र
GROUP BY शहर;

SELECT शहर, AVG(अंक) AS औसत_अंक
FROM छात्र
GROUP BY शहर
HAVING AVG(अंक) > 80;

7. JOIN (सम्मिलन)

दो या अधिक तालिकाओं के डेटा को जोड़ने के लिए JOIN का उपयोग होता है। सामान्यतः INNER JOIN का उपयोग होता है जो केवल मेल खाने वाली पंक्तियां लौटाता है:

SELECT छात्र.नाम, परीक्षा.अंक
FROM छात्र
JOIN परीक्षा ON छात्र.रोल = परीक्षा.रोल;
SELECT s.नाम, e.विषय
FROM छात्र s
INNER JOIN परीक्षा e ON s.रोल = e.रोल;

8. सबक्वेरी (Subquery)

एक क्वेरी के भीतर नेस्टेड क्वेरी को सबक्वेरी कहते हैं:

SELECT नाम FROM छात्र
WHERE अंक = (SELECT MAX(अंक) FROM छात्र);

SELECT नाम FROM छात्र
WHERE शहर IN (SELECT शहर FROM छात्र GROUP BY शहर HAVING COUNT(*) > 1);

सबक्वेरी पहले चलती है और उसका परिणाम बाहरी क्वेरी में उपयोग होता है। सबक्वेरी को कोष्ठक में रखना अनिवार्य है।

9. रिकॉर्ड की संख्या सीमित करना (LIMIT)

MySQL में LIMIT से परिणामों की संख्या सीमित की जा सकती है:

SELECT * FROM छात्र ORDER BY अंक DESC LIMIT 3;
SELECT * FROM छात्र LIMIT 2, 3;

LIMIT 2, 3 का अर्थ है स्थिति 2 से प्रारंभ करते हुए 3 पंक्तियां। यह पृष्ठांकन (pagination) में उपयोगी होता है।

10. जटिल क्वेरी लिखने के चरण

जटिल MySQL क्वेरी लिखने के लिए एक व्यवस्थित दृष्टिकोण अपनाना चाहिए। पहले यह स्पष्ट करें कि कौन से स्तंभों की आवश्यकता है, फिर किस तालिका या तालिकाओं से डेटा लेना है। यदि एक से अधिक तालिकाएं शामिल हैं, तो उन्हें जोड़ने वाले कुंजी स्तंभों की पहचान करें। इसके बाद WHERE शर्त से आवश्यक पंक्तियों को फ़िल्टर करें। यदि डेटा को समूहों में विभाजित करना है, तो GROUP BY का उपयोग करें और समूहों पर शर्त के लिए HAVING लगाएं। परिणामों को एक निश्चित क्रम में प्राप्त करने के लिए अंत में ORDER BY जोड़ें। LIMIT का उपयोग परिणामों की संख्या को सीमित करने के लिए होता है। उदाहरण के लिए, प्रत्येक शहर के उच्चतम अंक प्राप्त करने के लिए SELECT शहर, MAX(अंक) FROM छात्र GROUP BY शहर ORDER BY MAX(अंक) DESC; जैसी क्वेरी लिखी जा सकती है। इसी प्रकार सबक्वेरी का उपयोग तब करें जब एक क्वेरी का परिणाम दूसरी क्वेरी की शर्त में उपयोग हो। जटिल प्रश्नों को छोटे भागों में तोड़कर पहले प्रत्येक भाग को अलग-अलग चलाकर जांच करना एक अच्छी आदत है। इस विधि से त्रुटियों का पता आसानी से लगता है और अंतिम क्वेरी विश्वसनीय होती है। परीक्षा में इस क्रम को सही ढंग से लागू करने से प्रश्न शीघ्र और सटीक हल होते हैं।

त्वरित पुनरावृत्ति तालिकाएं

तालिका 1: SELECT के क्लॉज़

क्लॉज़ कार्य
WHERE पंक्तियों पर शर्त
ORDER BY क्रमबद्धता
GROUP BY समूहीकरण
HAVING समूहों पर शर्त
LIMIT पंक्तियों की संख्या सीमा

तालिका 2: एग्रीगेट फलन

फलन कार्य
COUNT() पंक्तियों की संख्या
SUM() योग
AVG() औसत
MAX() अधिकतम
MIN() न्यूनतम

तालिका 3: पैटर्न मिलान

पैटर्न अर्थ
'रा%' 'रा' से प्रारंभ
'%ता' 'ता' पर समाप्त
'%म%' 'म' कहीं भी
'_म' दूसरा अक्षर 'म'

माइंड मैप

graph TD A["MySQL क्वेरीज़"] --> B["WHERE: शर्त फ़िल्टर"] A --> C["LIKE / BETWEEN / IN"] A --> D["ORDER BY: सॉर्ट"] A --> E["एग्रीगेट फलन"] A --> F["GROUP BY + HAVING"] A --> G["JOIN"] A --> H["सबक्वेरी"] B --> B1["=, >, <, >=, <=, <>, AND, OR, NOT"] E --> E1["COUNT, SUM, AVG, MAX, MIN"] F --> F1["WHERE पंक्तियों पर, HAVING समूहों पर"] G --> G1["INNER JOIN ... ON"] H --> H1["नेस्टेड क्वेरी, कोष्ठक अनिवार्य"]

महत्वपूर्ण आरेख (SVG)

GROUP BY उदाहरण तालिका: छात्र शहर अंक दिल्ली 85 दिल्ली 92 मुंबई 78 मुंबई 88 कोलकाता 95 GROUP BY शहर परिणाम शहर COUNT AVG दिल्ली 2 88.5 मुंबई 2 83.0 कोलकाता 1 95.0 समूह कूट SELECT शहर, COUNT(*), AVG(अंक) FROM छात्र GROUP BY शहर; Golden Rule GROUP BY वाले स्तंभ ही SELECT में आते हैं
INNER JOIN संकल्पना छात्र तालिका रोल नाम 1 राम 2 सीता 3 गीता परीक्षा तालिका रोल विषय 1 गणित 2 विज्ञान 4 हिंदी JOIN परिणाम (रोल मिलाने पर) राम - गणित सीता - विज्ञान गीता और हिंदी मेल नहीं खाते कूट SELECT छात्र.नाम, परीक्षा.विषय FROM छात्र JOIN परीक्षा ON छात्र.रोल = परीक्षा.रोल; स्वर्ण नियम: INNER JOIN केवल मेल खाने वाली पंक्तियां

सामान्य गलतियां

  1. GROUP BY में शामिल स्तंभ न होना: SELECT अंक, शहर FROM छात्र GROUP BY शहर; गलत है — GROUP BY में शामिल स्तंभ ही SELECT में एग्रीगेट के साथ आ सकते हैं।
  2. HAVING की जगह WHERE: समूहों पर शर्त के लिए HAVING का उपयोग होता है, WHERE नहीं। WHERE एग्रीगेट फलनों के साथ काम नहीं करता।
  3. LIKE में % और _ का भ्रम: % कोई भी संख्या वर्ण दर्शाता है, _ केवल एक वर्ण।
  4. ORDER BY में DESC भूलना: डिफ़ॉल्ट आरोही होता है; अवरोही के लिए DESC अनिवार्य है।
  5. JOIN में ON शर्त भूलना: JOIN बिना ON शर्त के क्रॉस जॉइन बना देता है।
  6. COUNT(*) और COUNT(स्तंभ) में अंतर: COUNT(स्तंभ) NULL मानों की गणना नहीं करता, COUNT(*) सभी पंक्तियों की गणना करता है।
  7. सबक्वेरी में कोष्ठक भूलना: सबक्वेरी को सदैव कोष्ठक में रखना चाहिए।

परीक्षा युक्तियां

  1. WHERE पंक्तियों पर और HAVING समूहों पर शर्त लगाता है — यह सबसे महत्वपूर्ण अंतर है।
  2. एग्रीगेट फलन — COUNT, SUM, AVG, MAX, MIN — के साथ GROUP BY का सही संयोजन याद रखें।
  3. ORDER BY हमेशा GROUP BY और HAVING के बाद लिखा जाता है।
  4. LIKE 'रा%', '%ता', '_म' के पैटर्न अभ्यास करें।
  5. BETWEEN 80 AND 90 में दोनों सीमाएं सम्मिलित होती हैं।
  6. IN बहु मानों की जांच के लिए और = ANY के समकक्ष है।

निष्कर्ष

इस अध्याय में हमने MySQL की उन्नत क्वेरीज़ का विस्तृत अध्ययन किया। WHERE से पंक्तियों की फ़िल्टरिंग, ORDER BY से क्रमबद्धता, एग्रीगेट फलनों से सांख्यिकीय विश्लेषण, GROUP BY और HAVING से समूहीकरण, JOIN से तालिकाओं का सम्मिलन तथा सबक्वेरी से नेस्टेड क्वेरीज़ का अभ्यास किया। WHERE और HAVING का अंतर, एग्रीगेट फलनों का सही उपयोग और JOIN की संकल्पना इस अध्याय के प्रमुख केंद्र बिंदु हैं। LIKE के पैटर्न मिलान, BETWEEN की सीमा जांच और IN की सदस्यता जांच भी डेटा खोज में सहायक होते हैं। जटिल प्रश्नों को क्लॉज़ों के सही क्रम में लिखकर विश्वसनीय परिणाम प्राप्त किए जा सकते हैं। इन क्वेरीज़ की निपुणता से विद्यार्थी जटिल डेटाबेस प्रश्नों को आसानी से हल कर सकते हैं। अगले अध्याय में हम MySQL के फलनों का अध्ययन करेंगे।