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

तालिका को बारीकी से देखें - इसकी पंक्तियों को ब्रांड नाम (वर्णानुक्रमिक क्रम) द्वारा क्रमबद्ध किया गया है, और समान ब्रांड नाम वाली पंक्तियों को उत्पाद संख्या द्वारा अवरोही क्रम (अंतिम कॉलम) में क्रमबद्ध किया गया है।