4.1 सीमा
यदि आप अपनी SQL क्वेरी से बहुत अधिक डेटा लौटाने की अपेक्षा करते हैं, तो आप अधिकतम संख्या को अग्रिम रूप से सीमित कर सकते हैं। आखिरकार, तालिकाओं में हजारों या लाखों पंक्तियाँ हो सकती हैं।
SQL क्वेरी के परिणाम में पंक्तियों की संख्या को सीमित करना बहुत आसान बनाता है LIMIT
। यह कीवर्ड SQL क्वेरी के अंत में प्रयोग किया जाता है और ऐसा दिखता है:
LIMIT quantity
आइए उत्पाद तालिका के विरुद्ध एक क्वेरी लिखते हैं, जिसमें हमारे स्टोर के उत्पादों की सूची होती है। लेकिन चूँकि हमारा एक बहुत ही सफल स्टोर है और हम बहुत सारे उत्पाद बेचते हैं, हम उत्तर की केवल पहली 10 पंक्तियाँ प्राप्त करना चाहते हैं। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT * FROM product
LIMIT 10
और हमें निम्न क्वेरी परिणाम मिलता है:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
1 | मेज | Ikea | 20.00 | 15 |
2 | कुर्सी | Ikea | 5.00 | 45 |
3 | सोफ़ा | Ikea | 80.00 | 10 |
4 | बिस्तर | Ikea | 75.00 | 10 |
5 | अलमारी | BOSCH | 125.00 | 15 |
6 | दराज | दराज | 25.00 | 114 |
7 | टीवी | एलजी | 350.00 | 4 |
8 | चिराग | एलजी | 15.00 | 100 |
9 | ड्रेसर | Ikea | 99.00 | 10 |
10 | तश्तरी | BOSCH | 199.00 | 10 |
अब हम केवल पहली 5 पंक्तियों का अनुरोध करेंगे। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT * FROM product
LIMIT 5
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
1 | मेज | Ikea | 20.00 | 15 |
2 | कुर्सी | Ikea | 5.00 | 45 |
3 | सोफ़ा | Ikea | 80.00 | 10 |
4 | बिस्तर | Ikea | 75.00 | 10 |
5 | अलमारी | BOSCH | 125.00 | 15 |
4.2 ऑफसेट
पिछली बार हमने सीखा कि सर्वर प्रतिक्रिया में लाइनों की संख्या को कैसे सीमित किया जाए। और अब, उत्पाद तालिका से हजारों पंक्तियों के बजाय, हम पहली 10 पंक्तियाँ प्राप्त कर सकते हैं और उन्हें उपयोगकर्ता को प्रदर्शित कर सकते हैं। यह बिल्कुल सही है। लेकिन हम दूसरी 10 पंक्तियों को कैसे प्रदर्शित करते हैं? और तीसरा?
यदि हम LIMIT 20
, या लिखते हैं LIMIT 30
, तो क्या सर्वर क्रमशः 20 और 30 पंक्तियों को वापस नहीं करेगा?
यह इस मामले के लिए है कि SQL में एक विशेष कीवर्ड है OFFSET
जिसके साथ आप सर्वर से उसकी प्रतिक्रिया में N लाइनों को छोड़ने के लिए कह सकते हैं। इस कीवर्ड का उपयोग SQL क्वेरी (बाद में) के अंत में किया जाता है LIMIT
और ऐसा दिखता है:
OFFSET quantity
आइए उत्पाद तालिका पर एक प्रश्न लिखें और 11 से 15 के रिकॉर्ड प्राप्त करने का प्रयास करें। दूसरे शब्दों में, हम सर्वर से हमें 5 पंक्तियाँ वापस करने के लिए कह रहे हैं, लेकिन पहले प्रतिक्रिया की पहली 10 पंक्तियों को छोड़ दें। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT * FROM product
LIMIT 5
OFFSET 10
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
ग्यारह | बंहदार कुरसी | BOSCH | 44.00 | 8 |
12 | फूलदान | स्मार्टफ्लॉवर | 99.00 | 9 |
13 | खड़ा होना | Ikea | 100.00 | 10 |
सर्वर ने केवल 3 पंक्तियाँ लौटाईं, जिसका अर्थ है कि हमारी तालिका में कुल 13 पंक्तियाँ थीं। सर्वर ने पहले 10 को छोड़ दिया और अगले 5 को लौटा दिया।
4.3 अलग चुनें
एक अन्य उपयोगी कीवर्ड है DISTINCT
। इसका उपयोग तब किया जाता है जब तालिका में डुप्लिकेट रिकॉर्ड होते हैं और हम डुप्लिकेट को हटाना चाहते हैं।
हमारी टेबल में डुप्लीकेट कहां से आते हैं? तालिका में डुप्लीकेट नहीं हो सकते हैं, लेकिन क्वेरी के परिणामस्वरूप यह आसान है। आइए एक प्रश्न लिखें जो हमारे द्वारा बेचे जाने वाले सभी उत्पादों के ब्रांड लौटाएगा। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT brand FROM product
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
ब्रैंड |
---|
Ikea |
Ikea |
Ikea |
Ikea |
BOSCH |
BOSCH |
एलजी |
एलजी |
Ikea |
BOSCH |
BOSCH |
स्मार्टफ्लॉवर |
Ikea |
यह देखना आसान है कि इस तालिका में डुप्लिकेट पंक्तियाँ हैं। यह सुनिश्चित करने के लिए है कि कोई डुप्लीकेट नहीं है और आपको कीवर्ड का उपयोग करने की आवश्यकता है DISTINCT
। यहाँ सही किया गया अनुरोध कैसा दिखेगा:
SELECT DISTINCT brand
FROM product
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
ब्रैंड |
---|
Ikea |
BOSCH |
एलजी |
स्मार्टफ्लॉवर |
बहुत बेहतर। क्या यह नहीं? ;)
4.4 द्वारा आदेश
और अंत में हमें छँटाई करनी पड़ी । किसी क्वेरी के परिणामों को क्रमबद्ध करने के लिए, आपको कीवर्ड का उपयोग करने की आवश्यकता है ORDER BY
। तकनीकी रूप से ये दो शब्द हैं, लेकिन सार महत्वपूर्ण नहीं है। दो शब्द, एक ऑपरेटर।
इसे कीवर्ड के बाद लिखा जाना चाहिए WHERE
, लेकिन पहले LIMIT
और OFFSET
। यदि आप ORDER BY
के बाद लिखते हैं LIMIT
, तो SQL सर्वर आपको केवल एक त्रुटि लौटाएगा।
सामान्य तौर पर, यह ऑपरेटर इस तरह दिखता है:
ORDER BY column order
जहां कॉलम तालिका/सॉर्ट परिणाम में कॉलम का नाम है। और क्रम क्रमबद्ध क्रम है।
छँटाई क्रम तीन प्रकार का हो सकता है:
ASC
(आरोही से) - आरोही;DESC
(अवरोही से) - अवरोही;- निर्दिष्ट नहीं - उपयोग किया जाएगा
ASC
चलिए एक प्रश्न लिखते हैं जो आरोही क्रम में मूल्य द्वारा क्रमबद्ध उत्पादों की सूची लौटाएगा। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
2 | कुर्सी | Ikea | 5.00 | 45 |
8 | चिराग | एलजी | 15.00 | 100 |
1 | मेज | Ikea | 20.00 | 15 |
6 | दराज | BOSCH | 25.00 | 114 |
ग्यारह | बंहदार कुरसी | BOSCH | 44.00 | 8 |
4 | बिस्तर | Ikea | 75.00 | 10 |
3 | सोफ़ा | Ikea | 80.00 | 10 |
12 | फूलदान | स्मार्टफ्लॉवर | 99.00 | 9 |
9 | ड्रेसर | Ikea | 99.00 | 10 |
13 | खड़ा होना | Ikea | 100.00 | 10 |
यदि हम क्रमबद्ध क्रम निर्दिष्ट नहीं करते हैं तो हमें वही परिणाम मिलेगा - हम शब्द को छोड़ देंगे ASC
।
4.5 कई कॉलमों द्वारा ऑर्डर करें
ऑपरेटर ORDER BY
आपको परिणाम को कई स्तंभों के आधार पर क्रमित करने की अनुमति देता है। यह बहुत उपयोगी हो सकता है जब पहले कॉलम में बहुत सारे डुप्लिकेट तत्व हों। इस ऑपरेटर का सामान्य रूप इस प्रकार है:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
दूसरे शब्दों में, यदि पहले कॉलम के आधार पर छाँटने के बाद आपके पास पास में कई समान मान हैं, तो उन्हें दूसरे कॉलम द्वारा क्रमबद्ध किया जाता है, और इसी तरह।
आइए एक प्रश्न लिखें जो हमारे उत्पादों को ब्रांड द्वारा और उसी ब्रांड के उत्पादों के लिए - उनकी संख्या के अवरोही क्रम में क्रमबद्ध करेगा। यहाँ वह अनुरोध कैसा दिखेगा:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
6 | दराज | BOSCH | 25.00 | 114 |
5 | अलमारी | BOSCH | 125.00 | 15 |
10 | तश्तरी | BOSCH | 199.00 | 10 |
ग्यारह | बंहदार कुरसी | BOSCH | 44.00 | 8 |
2 | कुर्सी | Ikea | 5.00 | 45 |
1 | मेज | Ikea | 20.00 | 15 |
9 | ड्रेसर | Ikea | 99.00 | 10 |
13 | खड़ा होना | Ikea | 100.00 | 10 |
4 | बिस्तर | Ikea | 75.00 | 10 |
3 | सोफ़ा | Ikea | 80.00 | 10 |
8 | चिराग | एलजी | 15.00 | 100 |
7 | टीवी | एलजी | 350.00 | 4 |
12 | फूलदान | स्मार्टफ्लॉवर | 99.00 | 9 |
तालिका को बारीकी से देखें - इसकी पंक्तियों को ब्रांड नाम (वर्णानुक्रमिक क्रम) द्वारा क्रमबद्ध किया गया है, और समान ब्रांड नाम वाली पंक्तियों को उत्पाद संख्या द्वारा अवरोही क्रम (अंतिम कॉलम) में क्रमबद्ध किया गया है।
GO TO FULL VERSION