13 सबसे महत्वपूर्ण SQL कमांड किसी भी प्रोग्रामर को पता होना चाहिए

13 सबसे महत्वपूर्ण SQL कमांड किसी भी प्रोग्रामर को पता होना चाहिए

डेटाबेस आधुनिक वेब चलाते हैं। हर बड़ी या गतिशील वेबसाइट किसी न किसी तरह से डेटाबेस का उपयोग करती है, और जब इसके साथ मिलती है संरचित क्वेरी भाषा (एसक्यूएल) , डेटा में हेरफेर करने की संभावनाएं वास्तव में अनंत हैं। यदि आप पहले से ही SQL जानते हैं, तो सुनिश्चित करें कि आपने इन प्रोग्रामिंग कौशलों की जाँच की है जो सभी वेबसाइट डेवलपर्स को पता होना चाहिए।





आज मैं आपको उनमें से कुछ दिखा रहा हूँ कोर एसक्यूएल कमांड आपको एक प्रोग्रामर के रूप में जानने की जरूरत है।





डेटाबेस तालिका से लौटाए गए डेटा के कई नाम हैं। डेटा को आमतौर पर के रूप में संदर्भित किया जाता है पंक्तियों , अभिलेख , या टुपल्स . मैं इस पूरे लेख में इन शब्दों का परस्पर विनिमय करूँगा।





प्रस्तावना

आज के सभी उदाहरण चार काल्पनिक तालिकाओं पर आधारित होंगे। NS ग्राहक तालिका में ग्राहकों का नाम और आयु शामिल है:

NS ऊंचाइयों तालिका में किसी भी व्यक्ति का नाम और ऊंचाई होती है:



NS कर्मचारी तालिका में स्टाफ सदस्यों का नाम और आयु शामिल है -- बिल्कुल ग्राहक तालिका के समान:

अंतिम तालिका कहा जाता है लोग इसमें ग्राहक और स्टाफ टेबल की तरह ही लोगों का नाम और उम्र होती है:





1. चुनें

NS चुनते हैं कथन सबसे सरल है, और यह आवश्यक है कि आप इसे समझें क्योंकि यह लगभग सभी अन्य आदेशों को रेखांकित करता है। अपने आरक्षित SQL शब्दों को अपरकेस में लिखना सबसे अच्छा अभ्यास माना जाता है, क्योंकि यह कमांड को पढ़ने और समझने में आसान बनाता है।

जैसा कि इसके नाम का तात्पर्य है, चयन करने के लिए प्रयोग किया जाता है चुनते हैं एक डेटाबेस से डेटा। यहाँ सबसे सरल उपयोग है:





SELECT * FROM table;

इसके दो भाग हैं। पहला भाग ( चुनते हैं * ) निर्दिष्ट करता है कि आप कौन से कॉलम चुनना चाहते हैं। तारांकन इंगित करता है कि आप तालिका के सभी स्तंभों का चयन करना चाहते हैं। दूसरा भाग ( तालिका से ) आपके डेटाबेस इंजन को बताता है कि आप इस डेटा को कहाँ से प्राप्त करना चाहते हैं। 'टेबल' को अपने डेटाबेस टेबल के नाम से बदलें।

इस चयन को 'सेलेक्ट स्टार' के रूप में जाना जाता है। तारक का उपयोग करना यह पता लगाने का एक अच्छा तरीका है कि तालिका में कौन सा डेटा है, लेकिन मैं आपको किसी भी उत्पादन कोड के लिए इसका उपयोग करने की अनुशंसा नहीं करता हूं। किसी चयनित स्टार का उपयोग करते समय, यह डेटाबेस इंजन पर निर्भर करता है कि वह आपको वह डेटा प्रदान करे जो आप चाहते हैं। डेटा लौटाए जाने के क्रम पर आपका कोई नियंत्रण नहीं है, इसलिए यदि कोई व्यक्ति तालिका में एक नया कॉलम जोड़ता है, तो आप पा सकते हैं कि आपकी प्रोग्रामिंग भाषा में आपके चर अब सही डेटा का प्रतिनिधित्व नहीं करते हैं। सौभाग्य से, एक समाधान है।

आप स्पष्ट रूप से बता सकते हैं कि आप कौन से कॉलम पुनर्प्राप्त करना चाहते हैं, जैसे:

SELECT age, name FROM people;

यह क्वेरी 'लोग' तालिका से 'आयु' और 'नाम' कॉलम पुनर्प्राप्त करती है। यदि आपके पास बहुत अधिक डेटा है तो यह स्पष्ट होना थोड़ा कठिन हो सकता है, लेकिन ऐसा करने से भविष्य में समस्याएं कम हो जाएंगी, साथ ही भविष्य के किसी भी प्रोग्रामर द्वारा आपके एसक्यूएल को समझना आसान हो जाएगा।

यदि आप अतिरिक्त डेटा का चयन करना चाहते हैं, लेकिन यह आपकी किसी भी तालिका में संग्रहीत नहीं है, तो आप इसे इस तरह कर सकते हैं:

SELECT age, '1234' FROM people;

सिंगल कोट्स के अंदर कोई भी स्ट्रिंग कॉलम नाम से मेल खाने के बजाय वापस कर दी जाएगी।

2. कहाँ

डेटा पुनर्प्राप्त करने के लिए चयन कमांड उत्कृष्ट है, लेकिन क्या होगा यदि आप परिणामों को थोड़ा और फ़िल्टर करना चाहते हैं? केवल नीली आंखों वाले लोगों को पुनः प्राप्त करने के बारे में क्या? जनवरी में पैदा हुए लोगों के बारे में क्या जो मैकेनिक के रूप में काम करते हैं? यह वह जगह है जहाँ कहां कमांड आता है। यह आपको चयन के लिए शर्तों को लागू करने की अनुमति देता है, और आप इसे केवल कथन के अंत में जोड़ते हैं:

SELECT age, name FROM people WHERE age > 10;

यह प्रश्न अब उन लोगों तक सीमित है जिनकी आयु 10 वर्ष से अधिक है। आप का उपयोग करके कई शर्तों को जोड़ सकते हैं तथा ऑपरेटर:

SELECT age, name FROM people WHERE age > 10 AND age <20;

NS तथा कमांड ठीक उसी तरह काम करता है जैसे वह अंग्रेजी भाषा में करता है: यह कथन के लिए एक और शर्त लागू करता है। इस उदाहरण में, लौटाया गया डेटा 10 और 20 के बीच की आयु वाला कोई भी रिकॉर्ड होगा। जैसा कि कोई मिलान परिणाम नहीं है, कोई डेटा वापस नहीं किया जाता है।

किसी का पासवर्ड कैसे पता करें

इसके साथ संयोजन में उपयोग किया जा सकने वाला एक अन्य आदेश है या . यहाँ एक उदाहरण है:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

यह क्वेरी उन रिकॉर्ड्स को लौटाती है जहां उम्र 10 से अधिक है, या नाम 'जो' के बराबर है। ध्यान दें कि केवल एक समान चिह्न कैसे होता है? अधिकांश प्रोग्रामिंग भाषाएं तुल्यता की जांच के लिए दोहरे बराबर (==) का उपयोग करती हैं। डेटाबेस इंजनों के विशाल बहुमत के लिए इसकी आवश्यकता नहीं है (लेकिन यह प्रति वातावरण बहुत अधिक हो सकता है, इसलिए पहले दोबारा जांचें)।

3. आदेश

NS गण दिए गए परिणामों को सॉर्ट करने के लिए कमांड का उपयोग किया जाता है। यह उपयोग करने के लिए एक और आसान है। बस इसे अपने कथन के अंत में संलग्न करें:

SELECT name, age FROM people ORDER BY age DESC;

आपको कॉलम और ऑर्डर निर्दिष्ट करने की आवश्यकता है, जो हो सकता है एएससी आरोही या के लिए वर्णन उतरने के लिए। आप इस तरह के कई कॉलम द्वारा ऑर्डर कर सकते हैं:

SELECT name, age FROM people ORDER BY name ASC, age DESC

द्वारा आदेश अन्य आदेशों के साथ संयुक्त होने पर शायद सबसे उपयोगी है। सभी क्वेरी डेटा को तार्किक या क्रमबद्ध तरीके से नहीं लौटाएगी -- यह कमांड आपको इसे बदलने देती है।

4. शामिल हों

NS में शामिल होने के कमांड का उपयोग किया जाता है में शामिल होने के संबंधित डेटा एक या अधिक तालिकाओं में संग्रहीत। आप में शामिल होने के पहली तालिका में दूसरी तालिका, और निर्दिष्ट करें कि डेटा कैसे जुड़ा है। यहाँ एक बुनियादी उदाहरण है:

नोटपैड में प्लगइन्स कैसे जोड़ें++
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

यहां कुछ चीजें हो रही हैं। आपको 'लेफ्ट जॉइन' सिंटैक्स से शुरुआत करनी होगी, जो निर्दिष्ट करता है कि आप लेफ्ट टाइप जॉइन का उपयोग करके टेबल में शामिल होना चाहते हैं। इसके बाद, वह तालिका निर्दिष्ट करें जिसमें आप शामिल होना चाहते हैं (ऊंचाई)। NS उपयोग (नाम) सिंटैक्स बताता है कि कॉलम 'नाम' दोनों तालिकाओं में पाया जा सकता है, और यह कि तालिकाओं को एक साथ जोड़ने के लिए एक कुंजी के रूप में उपयोग किया जाना चाहिए।

यदि आपके कॉलम में प्रत्येक तालिका में अलग-अलग नाम हैं, तो चिंता न करें। आप 'उपयोग' के बजाय 'चालू' का उपयोग कर सकते हैं:

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

ऑन स्टेटमेंट स्पष्ट रूप से बताता है कि किस कॉलम को कुंजी पर रखना है। कई प्रकार के शामिल होते हैं, और प्रत्येक के विवरण में जाने में लंबा समय लगेगा, इसलिए यहां उनके उपयोगों का त्वरित सारांश दिया गया है:

  • (आंतरिक रूप से जुड़ा - दोनों तालिकाओं में एक मैच के साथ पंक्तियों को लौटाता है।
  • बाईं ओर का बाहरी जोड़ - बाएँ तालिका से सभी पंक्तियों को लौटाता है, दाएँ तालिका से किसी भी मिलान के साथ। यदि कोई मिलान नहीं है, तो बाईं तालिका के रिकॉर्ड अभी भी लौटाए जाते हैं।
  • दाएं (बाहरी) शामिल हों - यह लेफ्ट जॉइन के विपरीत है: दायीं टेबल की सभी पंक्तियों को वापस कर दिया जाता है, साथ ही लेफ्ट टेबल में किसी भी मैच के साथ।
  • पूर्ण (बाहरी) शामिल हों - किसी भी तालिका में एक मैच के साथ किसी भी रिकॉर्ड को लौटाता है।

'INNER' या 'OUTER' सिंटैक्स वैकल्पिक है। यह चीजों को समझना आसान बना सकता है, लेकिन आपको इसे अधिकांश समय के लिए निर्दिष्ट करने की आवश्यकता नहीं है।

5. उपनाम

अब आप मूल बातें जानते हैं, आइए देखें उपनाम आदेश। इसका उपयोग अस्थायी रूप से किसी तालिका का नाम बदलने के लिए किया जाता है - किसी अन्य चीज़ से अधिक उपनाम, क्योंकि यह नया नाम केवल आपके द्वारा चलाए जा रहे व्यक्तिगत लेनदेन के अंदर मौजूद है। यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं:

SELECT A.age FROM people A;

आप अपनी पसंद के किसी भी वैध नाम का उपयोग कर सकते हैं, लेकिन मुझे वर्णमाला के अक्षरों का उपयोग करना पसंद है। प्रत्येक स्तंभ नाम से पहले, उपनाम उपसर्ग है। यह उपनाम घोषित होने के तुरंत बाद तालिका को सौंपा गया है। यह बिल्कुल ऐसा करने जैसा ही है:

SELECT people.age FROM people;

एक लंबा टेबल नाम टाइप करने के बजाय, आप एक सरल और याद रखने में आसान अक्षर टाइप कर सकते हैं - लेकिन बात क्या है? ठीक है, यदि आप एक से अधिक तालिका से चयन कर रहे हैं, तो यह भ्रमित होना आसान है कि कौन से कॉलम किस तालिका से संबंधित हैं। यदि आपकी दोनों तालिकाओं में समान नाम वाले स्तंभ हैं, तो आपकी डेटाबेस क्वेरी तालिका नाम या उपनाम को स्पष्ट रूप से संदर्भित किए बिना चलने में विफल हो सकती है। यहाँ दो तालिकाओं के साथ एक उदाहरण दिया गया है:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

और यहाँ उपनाम के साथ वही क्वेरी है:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

स्टाफ तालिका को 'ए' का उपनाम दिया गया है, और ग्राहक तालिका को 'बी' का उपनाम दिया गया है। अलियासिंग टेबल वास्तव में आपके कोड को समझने में आसान बनाने में मदद करती है, और आपको टाइप करने की मात्रा को कम करती है।

आप 'AS' कमांड का उपयोग करके उपनाम वाले कॉलम का नाम भी बदल सकते हैं:

SELECT age AS person_age FROM people;

जब यह क्वेरी चलाई जाती है, तो कॉलम अब 'आयु' के बजाय 'person_age' कहलाएगा।

6. संघ

संघ एक महान आदेश है। यह आपको पंक्तियों को एक दूसरे से जोड़ने की अनुमति देता है। मेल खाने वाले स्तंभों को जोड़ने वाले जोड़ों के विपरीत, संघ असंबंधित पंक्तियों को जोड़ सकता है बशर्ते उनके पास समान संख्या और स्तंभों का नाम हो। यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

आप दो प्रश्नों के परिणामों के संयोजन के रूप में संघ के बारे में सोच सकते हैं। एक संघ केवल परिणाम लौटाएगा जहां दो प्रश्नों के बीच एक अनूठी पंक्ति है। डुप्लिकेट की परवाह किए बिना, आप सभी डेटा वापस करने के लिए 'यूनियन ऑल' सिंटैक्स का उपयोग कर सकते हैं:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

ध्यान दें कि पंक्तियों का क्रम कैसे बदलता है? संघ सबसे कुशल तरीके से काम करता है, इसलिए लौटाया गया डेटा क्रम में भिन्न हो सकता है।

संघ के लिए एक संभावित उपयोग मामला एक उप-योग है: आप किसी विशेष परिदृश्य के लिए अलग-अलग योगों की एक क्वेरी पर कुल योग की एक क्वेरी को जोड़ सकते हैं।

7. सम्मिलित करें

अब आप डेटाबेस से डेटा पुनर्प्राप्त करने के बारे में सब कुछ जानते हैं, लेकिन इसे सम्मिलित करने के बारे में क्या? यह वह जगह है जहाँ डालने आदेश आता है। यहाँ एक उदाहरण है:

INSERT INTO people(name, age) VALUES('Joe', 102);

आपको तालिका का नाम (लोग), और जिन स्तंभों का आप उपयोग करना चाहते हैं (नाम और आयु) निर्दिष्ट करना होगा। फिर 'VALUES' सिंटैक्स का उपयोग डालने के लिए मान प्रदान करने के लिए किया जाता है। इन्हें उसी क्रम में होना चाहिए जैसे कि पहले निर्दिष्ट किए गए कॉलम।

आप इन्सर्ट के लिए जहां क्लॉज निर्दिष्ट नहीं कर सकते हैं, और आपको यह सुनिश्चित करने की आवश्यकता है कि आप मौजूद सभी आवश्यक टेबल बाधाओं का पालन करें।

8. अद्यतन

कुछ डेटा डालने के बाद, विशिष्ट पंक्तियों को बदलने की आवश्यकता केवल स्वाभाविक है। यहाँ है अपडेट करें कमांड सिंटैक्स:

UPDATE people SET name = 'Joe', age = 101;

आपको वह तालिका निर्दिष्ट करनी होगी जिसे आप बदलना चाहते हैं, और फिर कॉलम और उनके नए मान निर्दिष्ट करने के लिए 'SET' सिंटैक्स का उपयोग करें। यह उदाहरण अच्छा है, लेकिन यह हर एक रिकॉर्ड को अपडेट करेगा -- ऐसा कुछ जो हमेशा वांछनीय नहीं होता है!

अधिक विशिष्ट होने के लिए, आप 'WHERE' क्लॉज का उपयोग ठीक उसी तरह कर सकते हैं जैसे चयन करते समय:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

आप 'AND' और 'OR' का उपयोग करके कई शर्तें भी निर्दिष्ट कर सकते हैं:

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

ध्यान दें कि शर्तों को बाधित करने के लिए कोष्ठक का उपयोग कैसे किया जाता है।

क्या आप राम को मिक्स एंड मैच कर सकते हैं?

9. अप्सर्ट

उफ़ एक अजीब लगने वाला शब्द है, लेकिन यह एक अविश्वसनीय रूप से उपयोगी कमांड है। मान लें कि आपकी मेज पर एक बाधा है, और आपने निर्दिष्ट किया है कि आप केवल अद्वितीय नामों वाले रिकॉर्ड चाहते हैं - उदाहरण के लिए, आप एक ही नाम से दो पंक्तियों को संग्रहीत नहीं करना चाहते हैं। यदि आपने 'जो' के एकाधिक मान डालने का प्रयास किया है, तो आपका डेटाबेस इंजन एक त्रुटि फेंक देगा और इसे करने से इंकार कर देगा (बिल्कुल सही)। एक यूपीएसईआरटी आपको एक रिकॉर्ड को अपडेट करने की अनुमति देता है यदि यह पहले से मौजूद है। यह अविश्वसनीय रूप से उपयोगी है! इस कमांड के बिना, आपको पहले यह जांचने के लिए बहुत सारे तर्क लिखने होंगे कि कोई रिकॉर्ड मौजूद है या नहीं, अगर नहीं है तो डालें, अन्यथा सही प्राथमिक कुंजी प्राप्त करें और फिर अपडेट करें।

दुर्भाग्य से, अलग-अलग डेटाबेस इंजनों में अप्सर्ट को अलग-अलग तरीके से लागू किया जाता है। PostgreSQL ने हाल ही में यह क्षमता हासिल की है, जबकि MySQL के पास यह काफी समय से है। यहाँ संदर्भ के लिए MySQL सिंटैक्स है:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

ध्यान दें कि यह कैसे अनिवार्य रूप से एक अपडेट और एक इंसर्ट स्टेटमेंट है, जिसे 'इंसर्ट फेल होने पर अपडेट' के रूप में सारांशित किया जा सकता है।

10. हटाएं

हटाएं अभिलेखों को पूरी तरह से हटाने के लिए उपयोग किया जाता है -- दुरुपयोग होने पर यह काफी हानिकारक हो सकता है! मूल सिंटैक्स का उपयोग करना बहुत आसान है:

DELETE FROM people;

अधिकांश अन्य आदेशों की तरह, यह हटा देगा हर चीज़ ! आपको पंक्तियों की थोड़ी अधिक संख्या में इसे प्रतिबंधित करने के लिए कहां उपयोग करने की आवश्यकता है - आदर्श रूप से एक:

DELETE FROM people WHERE name = 'Joe';

यदि आप एक प्रणाली विकसित कर रहे हैं, तो अक्सर 'सॉफ्ट डिलीट' लागू करना बुद्धिमानी है। आप वास्तव में कभी भी डिलीट कमांड नहीं चलाते हैं, बल्कि आप एक हटाए गए कॉलम को बनाते हैं, और फिर उस कॉलम को अपने चयन में जांचें - यदि आप कथित रूप से हटाए गए रिकॉर्ड को जल्दी और आसानी से पुनर्प्राप्त कर सकते हैं तो यह बहुत संभावित शर्मिंदगी से बच सकता है। हालाँकि, यह उचित बैकअप का कोई विकल्प नहीं है।

11. टेबल बनाएं

NS तालिका बनाएं टेबल बनाने के लिए कमांड का उपयोग किया जाता है। यह एक और बहुत आसान है:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

ध्यान दें कि कॉलम के नाम और बाधाएं ब्रैकेट के अंदर कैसे हैं, और कॉलम को उपयुक्त डेटाटाइप दिया जाता है। एक प्राथमिक कुंजी निर्दिष्ट की जाती है, जैसा कि किसी भी अच्छे डेटाबेस डिज़ाइन में आवश्यक होता है।

12. तालिका बदलें

NS तालिका में परिवर्तन तालिका की संरचना को संशोधित करने के लिए कमांड का उपयोग किया जाता है। यह थोड़ा सीमित है, क्योंकि आपका डेटाबेस आपको किसी तालिका को बदलने नहीं देगा यदि मौजूदा डेटा एक संघर्ष का कारण बनता है - उदाहरण के लिए, एक स्ट्रिंग को पूर्णांक में बदलना। उन मामलों में, पहले डेटा को ठीक करें, फिर तालिका को संशोधित करें। यहाँ एक उदाहरण है:

ALTER TABLE people ADD height integer;

यह उदाहरण लोगों की तालिका में पूर्णांक प्रकार की 'ऊंचाई' नामक कॉलम जोड़ता है। आप क्या बदल सकते हैं इसकी वास्तव में कोई सीमा नहीं है।

13. ड्रॉप टेबल

अंतिम आदेश है ड्रॉप तालिका . इसे डिलीट के रूप में सोचें, लेकिन एक रिकॉर्ड को हटाने के बजाय, यह टेबल के साथ हर एक रिकॉर्ड को हटा देता है! यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं:

DROP TABLE people;

यह काफी कठोर आदेश है, और कोई कारण नहीं है कि इसे आपके सिस्टम में प्रोग्राम करने की आवश्यकता है। इसे केवल अधिकांश मामलों में मैन्युअल रूप से किया जाना चाहिए, और यह हो सकता है बहुत विनाशकारी।

यह सभी आज के लिए है। मुझे आशा है कि आपने कुछ उपयोगी तरकीबें सीखी हैं! आप सीख सकते हैं कि कैसे एक वेबसाइट बनाओ , और फिर इसे गतिशील बनाने के लिए अपने नए कौशल का उपयोग करें - बस सुनिश्चित करें कि आप ये गलतियाँ नहीं करते हैं या इसे SQL इंजेक्शन के लिए असुरक्षित नहीं छोड़ते हैं। यदि आप सुनिश्चित नहीं हैं कि आपको SQL सीखने की आवश्यकता है, तो क्या आपने एक स्थिर साइट जनरेटर माना है?

अपने पसंदीदा एसक्यूएल टिप्स और ट्रिक्स के साथ नीचे एक टिप्पणी क्यों न छोड़ें?

छवि क्रेडिट: HYS_NP/शटरस्टॉक

साझा करना साझा करना कलरव ईमेल क्या यह विंडोज 11 में अपग्रेड करने लायक है?

विंडोज़ को नया रूप दिया गया है। लेकिन क्या यह आपको विंडोज 10 से विंडोज 11 में शिफ्ट होने के लिए मनाने के लिए काफी है?

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • एसक्यूएल
लेखक के बारे में जो कोबर्न(136 लेख प्रकाशित)

जो ब्रिटेन के लिंकन विश्वविद्यालय से कंप्यूटर विज्ञान में स्नातक हैं। वह एक पेशेवर सॉफ्टवेयर डेवलपर है, और जब वह ड्रोन नहीं उड़ा रहा है या संगीत नहीं लिख रहा है, तो उसे अक्सर तस्वीरें लेते या वीडियो बनाते हुए पाया जा सकता है।

जो कोबर्न . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें