4.1 मर्यादा

तुमची SQL क्वेरी खूप जास्त डेटा देईल अशी तुमची अपेक्षा असल्यास, तुम्ही आगाऊ कमाल संख्या मर्यादित करू शकता. शेवटी, सारण्यांमध्ये हजारो किंवा लाखो पंक्ती असू शकतात.

SQL वापरून क्वेरीच्या परिणामात पंक्तींची संख्या मर्यादित करणे खूप सोपे करते LIMIT. हा कीवर्ड SQL क्वेरीच्या अगदी शेवटी वापरला जातो आणि तो यासारखा दिसतो:

LIMIT quantity

चला उत्पादन सारणीच्या विरूद्ध एक क्वेरी लिहू, ज्यामध्ये आमच्या स्टोअरच्या उत्पादनांची सूची आहे. परंतु आमचे एक अतिशय यशस्वी स्टोअर असल्याने आणि आम्ही बरीच उत्पादने विकतो, आम्हाला उत्तराच्या फक्त पहिल्या 10 ओळी मिळवायच्या आहेत. ती विनंती कशी दिसेल ते येथे आहे:

SELECT * FROM product
LIMIT 10

आणि आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
टेबल IKEA 20.00 १५
2 खुर्ची IKEA ५.०० ४५
3 सोफा IKEA 80.00 10
4 पलंग IKEA ७५.०० 10
कपाट बॉश १२५.०० १५
6 शेल्फ शेल्फ २५.०० 114
टीव्ही एलजी 350.00 4
8 दिवा एलजी १५.०० 100
ड्रेसर IKEA ९९.०० 10
10 प्लेट बॉश १९९.०० 10

आता आपण फक्त पहिल्या 5 पंक्तींची विनंती करू. ती विनंती कशी दिसेल ते येथे आहे:

SELECT * FROM product
LIMIT 5

आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
टेबल IKEA 20.00 १५
2 खुर्ची IKEA ५.०० ४५
3 सोफा IKEA 80.00 10
4 पलंग IKEA ७५.०० 10
कपाट बॉश १२५.०० १५

4.2 ऑफसेट

सर्व्हरच्या प्रतिसादात ओळींची संख्या कशी मर्यादित करायची हे आम्ही मागच्या वेळी शिकलो. आणि आता, उत्पादन सारणीतील हजारो पंक्तींऐवजी, आम्ही पहिल्या 10 पंक्ती मिळवू शकतो आणि त्या वापरकर्त्याला दाखवू शकतो. ते उत्तम प्रकारे आहे. पण दुसऱ्या 10 पंक्ती कशा दाखवायच्या? आणि तिसरा?

जर आपण LIMIT 20, किंवा LIMIT 30, लिहिल्यास सर्व्हर अनुक्रमे 20 आणि 30 पंक्ती परत करणार नाही का?

या प्रकरणात एसक्यूएलमध्ये एक विशेष कीवर्ड आहे OFFSETज्याद्वारे तुम्ही सर्व्हरला त्याच्या प्रतिसादात N ओळी वगळण्यास सांगू शकता. हा कीवर्ड SQL क्वेरीच्या अगदी शेवटी वापरला जातो ( नंतर LIMIT) आणि असे दिसते:

OFFSET quantity

चला उत्पादन सारणीवर एक क्वेरी लिहू आणि 11 ते 15 रेकॉर्ड मिळवण्याचा प्रयत्न करूया. दुसऱ्या शब्दांत, आम्ही सर्व्हरला आम्हाला 5 पंक्ती परत करण्यास सांगत आहोत, परंतु प्रथम प्रतिसादाच्या पहिल्या 10 पंक्ती वगळा. ती विनंती कशी दिसेल ते येथे आहे:

SELECT * FROM product
LIMIT 5
OFFSET 10

आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
अकरा आर्मचेअर बॉश ४४.०० 8
१२ फुलदाणी स्मार्टफ्लॉवर ९९.००
13 उभे राहा IKEA १००.०० 10

सर्व्हरने फक्त 3 पंक्ती परत केल्या, याचा अर्थ आमच्या टेबलमध्ये एकूण 13 पंक्ती होत्या. सर्व्हरने पहिले 10 वगळले आणि पुढील 5 परत केले.

4.3 वेगळे निवडा

दुसरा उपयुक्त कीवर्ड आहे DISTINCT. जेव्हा टेबलमध्ये डुप्लिकेट रेकॉर्ड असतात आणि आम्हाला डुप्लिकेट काढायचे असतात तेव्हा ते वापरले जाते.

आमच्या टेबलमध्ये डुप्लिकेट कोठून येतात? टेबलमध्ये डुप्लिकेट असू शकत नाहीत, परंतु क्वेरीच्या परिणामी, हे सोपे आहे. चला एक क्वेरी लिहूया जी आम्ही विकत असलेल्या सर्व उत्पादनांचे ब्रँड परत करेल. ती विनंती कशी दिसेल ते येथे आहे:

SELECT brand FROM product

आम्हाला खालील क्वेरी परिणाम मिळतात:

ब्रँड
IKEA
IKEA
IKEA
IKEA
बॉश
बॉश
एलजी
एलजी
IKEA
बॉश
बॉश
स्मार्टफ्लॉवर
IKEA

या टेबलमध्ये डुप्लिकेट पंक्ती आहेत हे पाहणे सोपे आहे. हे सुनिश्चित करण्यासाठी आहे की तेथे कोणतेही डुप्लिकेट नाहीत आणि आपल्याला कीवर्ड वापरण्याची आवश्यकता आहे DISTINCT. दुरुस्त केलेली विनंती कशी दिसेल ते येथे आहे:

SELECT DISTINCT brand
FROM product

आम्हाला खालील क्वेरी परिणाम मिळतात:

ब्रँड
IKEA
बॉश
एलजी
स्मार्टफ्लॉवर

खूप चांगले. नाही का? ;)

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 ५.०० ४५
8 दिवा एलजी १५.०० 100
टेबल IKEA 20.00 १५
6 शेल्फ बॉश २५.०० 114
अकरा आर्मचेअर बॉश ४४.०० 8
4 पलंग IKEA ७५.०० 10
3 सोफा IKEA 80.00 10
१२ फुलदाणी स्मार्टफ्लॉवर ९९.००
ड्रेसर IKEA ९९.०० 10
13 उभे राहा IKEA १००.०० 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 शेल्फ बॉश २५.०० 114
कपाट बॉश १२५.०० १५
10 प्लेट बॉश १९९.०० 10
अकरा आर्मचेअर बॉश ४४.०० 8
2 खुर्ची IKEA ५.०० ४५
टेबल IKEA 20.00 १५
ड्रेसर IKEA ९९.०० 10
13 उभे राहा IKEA १००.०० 10
4 पलंग IKEA ७५.०० 10
3 सोफा IKEA 80.00 10
8 दिवा एलजी १५.०० 100
टीव्ही एलजी 350.00 4
१२ फुलदाणी स्मार्टफ्लॉवर ९९.००

सारणीकडे बारकाईने पहा - त्याच्या पंक्ती ब्रँड नावाने (वर्णक्रमानुसार) क्रमवारी लावल्या आहेत आणि त्याच ब्रँड नावाच्या पंक्ती उतरत्या क्रमाने (अंतिम स्तंभ) उत्पादन क्रमांकानुसार क्रमवारी लावल्या आहेत.