कम्प्युटरहरू, फाइल प्रकारहरू
SQL अलग: वर्णन, उदाहरणहरू, गुणहरू
प्रायः जब तालिकाबाट जानकारी प्राप्त गर्न SQL को प्रयोग गर्दा, प्रयोगकर्ताले अनावश्यक डेटा प्राप्त गर्दछ, जुन बिल्कुल समान डुप्लिकेट पङ्क्तिहरू हुन्छन्। यो स्थिति बहिष्कृत गर्न को लागी SQL मा अलग तर्क को चयन क्लज मा प्रयोग गर्नुहोस्। यस लेखमा, हामीले यो तर्क प्रयोग गरी उदाहरणहरू पनि विचार गर्नेछौं, साथसाथै परिस्थितिहरू त्यागेर यो अझ राम्रो छ।
विशेष उदाहरणहरू विचार गर्नुभन्दा अघि, हामी डेटाबेसमा दुईवटा आवश्यक तालिकाहरू सिर्जना गर्नेछौं।
टेबल तयारी गर्दै
कल्पना गर्नुहोस् कि हामीले डाटाबेसमा भण्डारण बारे जानकारी भण्डारण गरेको छ, दुई तालिकाहरूमा प्रस्तुत गरिएको छ। यो ओबोइ तालिका (वालपेपर) मा फील्ड आइडी (अद्वितीय पहिचानकर्ता), टाइप (प्रकारको वालपेपर - पेपर, vinyl, आदि), रंग, संरचना र मूल्य। र Ostatki तालिका (बायाँ) खेत id_oboi (Oboi तालिका मा अद्वितीय पहिचानकर्ता को संदर्भ) र गणना (गोदाम मा रोल को संख्या)।
डेटाहरूसँग तालिकाहरूमा भर्नुहोस्। वालपेपरको साथमा हामी 9 प्रविष्टिहरू जोड्दछौं:
Oboi | ||||
आईडी | टाइप गर्नुहोस् | रंग | संरचना | मूल्य |
1 | कागज | अनेकौं | उभिएको छ | 56.9 |
2 | डबल-तह पेपर | बेज | Smooth | 114.8 |
3 | Vinyl | सुन्तला | उभिएको छ | 504 |
4 | गैर बुना कपडे | बेज | उभिएको छ | 1020.9 |
5 | डबल-तह पेपर | बेज | Smooth | 150.6 |
छैटौँ | कागज | अनेकौं | Smooth | 95.4 |
सातौं | Vinyl | Brown | Smooth | 372 |
8 औं | गैर बुना कपडे | सेतो | उभिएको छ | 980.1 |
9ौँ | कपडा | गुलाबी | Smooth | 1166.5 |
बाँकीहरूमा तालिकामा त्यहाँ पनि 9 रेकर्डहरू छन्:
ओस्टटिki | |
Id_oboi | गणना गर्नुहोस् |
1 | 8 औं |
2 | 12 |
3 | 24 |
4 | 9ौँ |
5 | 16 औं |
छैटौँ | सातौं |
सातौं | 24 |
8 औं | 32 |
9ौँ | 11 औं |
SQL मा कसरी प्रयोग गर्ने भनेर वर्णन गर्ने भनेर सुरू गरौं।
चयन क्लोजमा अलग राख्नुहोस्
प्रश्नहरु को चयन को खोजशब्दों को तुरंत बाद अलग तर्क को राखी जानी चाहिए। यो चयन क्लोजमा निर्दिष्ट सबै स्तम्भहरूमा तुरुन्तै लागु गरिएको छ, किनभने यसले क्वेरीको नतीजाबाट समान समान पङ्क्तिहरू समावेश गर्नेछ। यसैले, यो SQL क्वेरी लेख्दा "विशिष्ट चयन गर्नुहोस्" निर्दिष्ट गर्न पर्याप्त छ। एकमात्र अपवाद कुल प्रकार्यहरू भित्रको प्रयोग हो जुन सानो पछि पछि विचार गरिनेछ।
यो सम्झना हुनुपर्छ कि अधिकतर DBMS ले तपाईंको अनुरोध यस तरिका को पहिचान नहीं गरेको छ:
चयन गर्नुहोस् अलग Ostatki.Count, अलग Oboi। * ओबो बाट इन्टरनेट जोड्नुहोस् ओस्टटिki ओ ओ ओबोई.id = ओस्टटिki.id_ोबिया |
यहाँ, तर्क एक पटक धेरै पटक निर्दिष्ट वा निर्दिष्ट गरिएको छ, तर दोस्रो, तेस्रो वा अन्य चयन योग्य स्तम्भ भन्दा पहिले। तपाईंलाई सिन्टैक्समा त्रुटिहरू सन्दर्भको साथ एक त्रुटि पाउनेछ।
मानक प्रश्नहरूमा फरक प्रयोग गर्दै
यो स्पष्ट छ कि टेबल र उनको भरने को संरचना को उचित निर्माण संग एक नै तालिका परिस्थितियों को बीच बिल्कुल समान स्ट्रिंग सामना गरिन्छ जब बहिष्कार गरिन्छ। यसैले, एक तालिकाबाट चयनको साथ "चयन गर्नुहोस् * अलग" क्वेरीको निष्पक्ष व्यावहारिक रूपमा अव्यवस्थित छ।
एक अवस्था कल्पना गर्नुहोस् जहाँ हामीले खोज्न चाहानुहुन्छ कि किसानको किसिमको छ, बस सुविधाको लागि, क्रमबद्ध गर्नुहोस्:
चयन गर्नुहोस् Oboi.type प्रकार द्वारा Oboi आदेश बाट |
र हामी परिणाम प्राप्त गर्दछौं:
टाइप गर्नुहोस् |
कागज |
कागज |
डबल-तह पेपर |
डबल-तह पेपर |
Vinyl |
Vinyl |
कपडा |
गैर बुना कपडे |
गैर बुना कपडे |
तपाईले देख्न सक्नुहुनेछ, त्यहाँ तालिकामा डुप्लिकेट पङ्क्तिहरू छन्। यदि हामी चयन गरिएको विशिष्ट क्लोजमा थपौं भने:
चयन गर्नुहोस् Oboi.type फरक प्रकार द्वारा Oboi आदेश बाट |
त्यसपछि हामी दोहोरी नतिजा फर्काउँछौं:
टाइप गर्नुहोस् |
कागज |
डबल-तह पेपर |
Vinyl |
कपडा |
गैर बुना कपडे |
यसैले, यदि डाटा तालिकामा सही रूपमा प्रविष्ट गरिएको थियो, त्यसोभए कल वा तुरुन्तै ग्राहकहरूको अनुरोध पछि हामी जवाफ दिन सक्नेछौं कि पसलमा कुनै तरल वालपेपर, कांच काँध र एक्रिलिक वालपेपर छैन। दिइएका भण्डारहरूमा वर्गीकरण प्राय: एक सय वालपेपरमा सीमित छैन, यो पर्याप्त अनियमित प्रकारको सूची हेर्नको लागी श्रम-उपभोक्ता हुनेछ।
समग्र प्रकार्य भित्र अलग प्रयोग
SQL अलग कुनै पनि समग्र प्रकार्यसँग प्रयोग गर्न सकिन्छ। तर मिन र अधिकतमका लागी, यसको प्रयोग कुनै प्रभाव छैन, र योग वा औसत मूल्यको गणना गर्दा, यो एकदम परिस्थिति कल्पना गर्न मिल्ने सम्भव छ जहाँ यो खाता दोहोर्याउन आवश्यक छैन।
आउनुहोस् हामी जान्न चाहन्छौ कि हाम्रो गोदाम कति भइरहेको छ, र यसको लागि हामी एउटा अनुरोध पठाउछौं कि गोदाममा रोलहरूको कुल संख्या गणना गर्दछौं:
छनौट राशि (ओस्टटाइ.count) ओस्टट्की बाट |
क्वेरी जवाफ फर्काउने 143. 143 यदि हामी परिवर्तन गर्छौं भने:
चयन योग (अलग Ostatki.count) ओस्टट्की बाट |
त्यसपछि हामी केवल 119 जना छौं, किनभने लेख 3 र 7 अन्तर्गत वालपेपर वही मात्रामा स्टकमा छन्। यद्यपि, यो स्पष्ट छ कि यो जवाफ गलत छ।
प्राय: SQL, गणना गणनाको साथ प्रयोग गरिन्छ। त्यसोभए, बिना सजिलो, हामी पत्ता लगाउन सक्दछौँ कि हामी सामान्यतया क्यामेराको कति प्रकारका प्रकारका छौँ:
चयन गरिएको गणना (भिन्न Oboi.type) ओबो बाट |
र परिणाम 5 पेपर साधारण र दुई तह, vinyl, कपडा र गैर बुना। निश्चित रूपमा सबैले एक विज्ञापन देख्यो: "हामीसँग 20 भन्दा धेरै प्रकारको भित्री वॉलपेपरहरू छन्!", यसको अर्थ यो हो कि यस भण्डारमा सबै केहि दर्जन रोलहरू छैनन्, तर धेरै प्रकारका आधुनिक प्रकारको वालपेपर।
दिलचस्प छ, एक अनुरोध मा, तपाईं धेरै प्रकार्य निर्दिष्ट गर्न सक्नुहुन्छ निर्दिष्ट विशेषता संग वा बिना। यही छ, यो एक मात्र स्थिति हो जहाँ चयनमा भिन्नता धेरै पटक उपस्थित हुन सक्छ।
मैले तर्कको प्रयोग कहिले अस्वीकार गर्नुपर्छ
SQL अलग तर्क को प्रयोग को दुई तरिका मध्ये एक मा खारिज गर्नु पर्छ:
- तपाइँ तालिकाहरूबाट चयन गर्नुहुन्छ र प्रत्येकमा मानहरूको विशिष्टता निश्चित छन्। यस अवस्थामा, तर्कको प्रयोग इन्सेक्सपिन्ट हो, किनभने यो सर्भर वा क्लाइन्टमा अतिरिक्त लोड हो (DBMS प्रकारको आधारमा निर्भर गर्दछ)।
- तपाईं आवश्यक डेटा हराउन डराउँछन्। हामीलाई बताउनुहोस्।
मान्नुहोस् कि मालिकले तपाइँसँग भएको वालपेपरको सूची प्रदर्शन गर्न सोध्दछ, केवल दुई स्तम्भहरू - टाइप र रङसँग। आदत द्वारा, तपाईं तर्क को निर्दिष्ट गर्दछ:
चयन गर्नुहोस् Oboi.type, Oboi.color ओबो बाट Oboi.type द्वारा ORDER |
र - तपाईंले केहि डेटा गुमाउनु भयो:
टाइप गर्नुहोस् | रंग |
कागज | अनेकौं |
डबल-तह पेपर | बेज |
Vinyl | Brown |
Vinyl | सुन्तला |
कपडा | गुलाबी |
गैर बुना कपडे | बेज |
गैर बुना कपडे | सेतो |
यसले देखा पर्दछ कि हामीसँग मात्र एक प्रकारको पेपर वालपेपर (पारंपरिक र दुई-तहमा) छ, यद्यपि वास्तवमा हाम्रो सानो तालिकामा पनि उनीहरूको दुईवटा लेखहरू छन् (परिणाम बिना फरक):
टाइप गर्नुहोस् | रंग |
कागज | अनेकौं |
कागज | अनेकौं |
डबल-तह पेपर | बेज |
डबल-तह पेपर | बेज |
Vinyl | Brown |
Vinyl | सुन्तला |
कपडा | गुलाबी |
गैर बुना कपडे | सेतो |
गैर बुना कपडे | बेज |
यसैले, कुनै पनि प्रश्नको साथ, विभिन्न तर्कको साथ एक सावधान हुनुपर्दछ र हातमा निर्भरता अनुसार यसको अनुप्रयोगसँग समाधान समाधान गर्नै पर्छ।
वैकल्पिक विशिष्ट
अलग तर्कको विपरीत सबै तर्क हो। जब तपाइँ यसलाई प्रयोग गर्नुहुन्छ, डुप्लिकेट रेखाहरू सुरक्षित छन्। तर पूर्वनिर्धारित रूपमा DBMS ले यो सबै मानहरू प्रिन्ट गर्न आवश्यक छ भनेर सोच्दछ, सबै तर्कहरू वास्तविक कार्यात्मक तर्क भन्दा बढी निर्दिष्टकर्ता हो।
Similar articles
Trending Now