جاوا پروجیکٹ بنانے کے سلسلے میں ایک مضمون (دیگر مواد کے لنکس آخر میں ہیں)۔ اس کا مقصد کلیدی ٹیکنالوجیز کا تجزیہ کرنا ہے، نتیجہ ٹیلی گرام بوٹ لکھنا ہے۔ پچھلے مضامین اور ڈیٹا بیس پر ہوم ورک کا تجزیہ: 1 , 2 , 3 . ہر ایک کے لیے جس نے صبر اور برداشت کا مظاہرہ کیا، ہر اس شخص کے لیے جو میرے ساتھ اس چوتھے مضمون سے گزر رہا ہے، شاباش۔ جیسا کہ وہ کہتے ہیں، جو چلتا ہے وہ سڑک پر عبور حاصل کر سکتا ہے۔ اس ہفتے ڈیٹا بیس کے بارے میں حتمی مضمون جاری کیا جائے گا، جس میں ہم رشتوں اور شمولیت کی اقسام کے بارے میں بات کریں گے ۔ لیکن اس سے پہلے کہ ہم نئی معلومات سے نمٹیں، آئیے اپنا ہوم ورک چیک کریں... میں واقعی میں ایک استاد کی طرح محسوس کرتا ہوں۔ مجھ سے ناراض نہ ہوں: میرے پاس تدریسی تعلیم نہیں ہے، یہ یقینی بات ہے۔ چونکہ پچھلے ہفتے ریموٹ کنٹرول کی تفصیلی جانچ نے مواد کا بڑا حصہ لیا، میں نے ہوم ورک کے تجزیہ اور نئے مواد کے جائزے کو دو حصوں میں تقسیم کرنے کا فیصلہ کیا۔
پھر ہمیں آبادی کے لحاظ سے اپنے سوال کو ترتیب دینے اور صرف ایک ریکارڈ لینے کی ضرورت ہے۔ ایسا کرنے کے لیے، آپ کو اسکرپٹ کے آخر میں ایک LIMIT آپریٹر شامل کرنے اور مطلوبہ مقدار بتانے کی ضرورت ہے: $ SELECT * ملک سے آرڈر بذریعہ آبادی DESC LIMIT 1؛
یہاں سب کچھ زیادہ دلچسپ ہے، کیونکہ درخواست زیادہ پیچیدہ، بلکہ زیادہ دلچسپ بھی ہوگی۔ چونکہ ہمیں ابھی تک شمولیت کے بارے میں کوئی اندازہ نہیں ہے، اس لیے ہم صرف ملک کی شناخت حاصل کر سکتے ہیں: $ SELECT country_id، SUM(آبادی) FROM city GROUP BY country_id ORDER BY SUM(آبادی) DESC LIMIT 1؛ یہاں ہم نے ایک عمدہ کام کیا - ہم نے ہر ملک کے تمام معروف شہروں کی آبادی کا مجموعہ جمع کیا، اس رقم سے ترتیب دیا گیا اور پہلا عنصر لیا۔ ٹھیک ہے، کیا یہ بہت اچھا ہے؟ مجھے خوشی ہوئی :D اس کے بعد آپ کو فوری طور پر ایک سوالیہ گرو کی طرح محسوس ہوتا ہے... (زیادہ دیر تک نہیں، یقیناً))
اس صورت میں، سب کچھ بالکل اسی طرح ہو جائے گا. فرق صرف اتنا ہے کہ چھانٹی کو الٹ دیا جائے گا - بس۔ لہذا، میں صرف درخواستیں لکھتا ہوں:
$ ملک_id کا انتخاب کریں، SUM(آبادی) شہر کے گروپ کے لحاظ سے ملک_id آرڈر کے حساب سے رقم (آبادی) کی حد 1؛
$ منتخب کریں * ملک سے آرڈر کریں آبادی کی حد 1؛ اور نتیجہ خود دیکھیں!
یہاں ایک بار پھر تکنیکی وضاحتیں کسی طرح درست نہیں ہیں، جیسے کہ مینیجر نے اسے لکھا تھا... میں نے یہ فیصلہ کیوں کیا؟ کیونکہ یہ واضح نہیں ہے کہ کس ٹیبل میں کام کرنا ہے۔ لیکن یہ عام بات ہے: کوئی کام ایسا نہیں ہے جس میں سب کچھ فوری طور پر واضح اور قابل فہم ہو۔ لہذا، آپ کو کاموں کو احتیاط سے پڑھنے کی ضرورت ہے، اور اگر آپ کے سوالات ہیں، تو ان سے فوری طور پر پوچھیں! یہ ٹھیک ہے، ایک تبصرہ۔ ہمارے ڈیٹا بیس میں موجود ڈیٹا کو مدنظر رکھتے ہوئے، ہم شہروں کے ڈیٹا کا استعمال کرتے ہوئے تلاش کریں گے۔ ایسا کرنے کے لیے، درج ذیل سوال لکھیں: $ SELECT country_id، AVG(آبادی) FROM city GROUP BY country_id؛ یہ یہاں آسان ہے: ہم AVG فنکشن استعمال کرتے ہیں اور اپنے شہر کے ریکارڈ کو ملک کے لحاظ سے گروپ کرتے ہیں۔
درخواست پر یہاں ہلکی سی تبدیلی کی جائے گی۔ گروپ بندی کرنے سے پہلے ہمیں ناموں سے فلٹرنگ شامل کرنے کی ضرورت ہے۔ میں اس مضمون کو شائع کرنے سے پہلے، تمام طلباء کی طرح، اپنا ہوم ورک کرتا ہوں، اور میں سمجھتا ہوں کہ جوائن کیے بغیر یہ مسئلہ حل نہیں ہو سکتا۔ کیوں؟ کیونکہ کنٹری آئی ڈی کے علاوہ ہمیں اس کا نام بھی لینا ہوگا۔ اور یہ دو میزوں کو ایک ریکارڈ میں شامل کیے بغیر نہیں ہو سکتا۔ لہذا، میں یہ کام ضرور کروں گا، لیکن یہ میرا جام ہے...))) میں درخواست میں LIKE کا استعمال کرتے ہوئے ایک کام کے ساتھ آنا چاہتا تھا...) $ SELECT ci.country_id, AVG(ci.population ) شہر سے اندرون ملک شامل ہوں co ON ci.country_id = co.id جہاں co.name کی طرح "%a" GROUP BY country_id؛ یہاں کیا ہوا ہے؟ سب سے پہلے، ہم نے غیر ملکی کلید country_id کا استعمال کرتے ہوئے شہر اور ملک کے ٹیبلز سے ریکارڈز کو جوائن کیا، ملک کے ناموں سے فلٹر کیا گیا تاکہ وہ "a" میں ختم ہوں اور تب ہی ملک_id کے لحاظ سے گروپ کیا جائے۔
یہاں ہمیں صرف COUNT فنکشن استعمال کرنے اور آبادی پر فلٹرنگ شامل کرنے کی ضرورت ہے: $ SELECT COUNT(*) ملک سے جہاں آبادی > 4000000؛ اس کے نتیجے میں ہمیں پتہ چلا کہ ایسے 3 ممالک ہیں، کیا یہ درست ہے؟ ہاں، صرف مالڈووا ہی یہ سنگ میل عبور نہیں کرتا ہے۔
ایسا کرنے کے لیے، ہمیں ORDER BY آپریٹر استعمال کرنے کی ضرورت ہے جسے ہم پہلے سے جانتے ہیں۔ لیکن ذہن میں رکھیں کہ پہلے سے طے شدہ ترتیب قدرتی ترتیب میں ہے۔ نمبروں کے لیے اس کا مطلب یہ ہے کہ اسے صعودی ترتیب میں ترتیب دیا گیا ہے، سٹرنگز کے لیے اس کا مطلب ہے کہ اسے پہلے حروف سے شروع کر کے ترتیب دیا گیا ہے۔ اگر ہمیں نزولی ترتیب کی ضرورت ہے تو ہمیں فطری کے الٹا کی ضرورت ہے: $ SELECT * FROM country ORDER BY آبادی DESC;
یہ وہ جگہ ہے جہاں قدرتی ترتیب کیا ہے اس کا علم کام آئے گا۔ چونکہ یہ پہلے سے طے شدہ ہے، یہ ہمارے لیے کیک کا ایک ٹکڑا ہے: $ SELECT * ملک سے نام کے مطابق آرڈر کریں؛
دراصل، ہوم ورک کا تجزیہ
میں یقینی طور پر خوش ہوں کہ ایسے لوگ ہیں جو PD کرتے ہیں اور اس کے بارے میں بات کرتے ہیں۔ یہ ٹھنڈا ہے! مجھے ہر ممکن حد تک یقین ہے کہ علم کو مضبوط کیے بغیر محض پڑھنا کہیں نہ جانے کا راستہ ہے۔ لہذا، ہر ایک جس نے کیا یا کرنے کی کوشش کی - احترام. میں آپ کو کاموں کی شرائط یاد دلاتا ہوں:- HAVING آپریٹر کو سمجھیں اور ہماری مثال سے میزوں کے لیے ایک مثال استفسار لکھیں۔ اگر آپ کو مزید واضح کرنے کے لیے کچھ فیلڈز یا مزید اقدار شامل کرنے کی ضرورت ہے، تو انہیں شامل کریں۔ اگر کوئی چاہتا ہے تو کمنٹس میں اپنا مثالی حل لکھیں - تاکہ اگر میرے پاس وقت ہو تو میں بھی اسے چیک کر سکتا ہوں۔
- UI کے ذریعے ڈیٹا بیس کے ساتھ کام کرنے کے لیے MySQL ورک بینچ انسٹال کریں۔ مجھے لگتا ہے کہ ہمارے پاس پہلے ہی کنسول سے کام کرنے کی کافی مشق ہو چکی ہے۔ ڈیٹا بیس سے جڑیں۔ اگر آپ ڈیٹا بیس کے ساتھ کام کرنے کے لیے کچھ اور استعمال کرتے ہیں، تو بلا جھجھک اس کام کو چھوڑ دیں۔ یہاں اور آگے میں صرف MySQL ورک بینچ استعمال کروں گا۔
- ہمارے ڈیٹا کا استعمال کرتے ہوئے رسید کے لیے درخواستیں لکھیں:
- سب سے چھوٹا/سب سے زیادہ آبادی والا ملک؛
- ملک میں باشندوں کی اوسط تعداد؛
- ان ممالک میں باشندوں کی اوسط تعداد جن کے نام "a" پر ختم ہوتے ہیں۔
- چار ملین سے زیادہ آبادی والے ممالک کی تعداد؛
- باشندوں کی تعداد میں کمی کے لحاظ سے ممالک کی ترتیب؛
- قدرتی ترتیب میں نام کے مطابق ممالک کو ترتیب دیں۔
آئیے HAVING کے بارے میں بات کرتے ہیں۔
آپریٹر کو جاننے سے آپ کو ایک سے زیادہ انٹرویو پاس کرنے میں مدد مل سکتی ہے جہاں SQL کے مسائل ہوں گے۔ اس لیے اسے سمجھنا بہت ضروری ہے۔ ایسا ہوتا ہے کہ آپ مجموعی افعال (SUM, MIN, MAX, AVG) کے لیے شرائط استعمال نہیں کر سکتے۔ اس کے علاوہ، HAVING کو ان فیلڈز کے لیے استعمال کیا جاتا ہے جن کو گروپ کیا جاتا ہے۔ اس کا کیا مطلب ہے؟ مثال کے طور پر، اگر ہم ایسے ممالک حاصل کرنا چاہتے ہیں جہاں شہروں میں رہنے والوں کی اوسط تعداد 50,000 سے زیادہ ہے، تو ہم HAVING استعمال کیے بغیر نہیں کر سکتے۔ جیسا کہ میں اسے سمجھتا ہوں، ایسا اس لیے کیا گیا ہے کہ جہاں WHERE کے بیان پر عمل درآمد ہونے کے بعد جمع ہوتا ہے اور اس میں مجموعی اقدار کو شامل کرنا ناممکن ہے جس کا حساب بعد میں کیا جائے گا۔ یہاں تک کہ اگر اب تک میری رائے سمجھ میں زیادہ اضافہ نہیں کرتی ہے، تو آپ اسے صرف ایک حقیقت کے طور پر قبول کر سکتے ہیں اور اس کے ساتھ چل سکتے ہیں۔ پروگرامنگ میں، اکثر ایسا ہوتا ہے کہ اگر ایک لمحے میں کوئی چیز غیر واضح ہو، تو اس کا مطلب یہ ہو سکتا ہے کہ دماغ نے ابھی تک اسے ہضم نہیں کیا ہے۔ یہ سوچ کر سو جائیں، اگلے دن سب کچھ واضح ہو جائے گا۔MySQL ورک بینچ انسٹال کرنا
یہاں اور آگے میں سوالات کے لیے ورک بینچ کا استعمال کروں گا۔ میں آپ کو دکھاؤں گا کہ آپ کو ڈیٹا بیس سے کنکشن انسٹال کرنے اور بنانے کی کیا ضرورت ہے۔ یہ اوریکل کا ایک پروڈکٹ ہے، لہذا آپ کو صرف ان کی ویب سائٹ پر جانے کی ضرورت ہے اور اپنے مطلوبہ ورژن اور آپریٹنگ سسٹم کو منتخب کریں۔ ایسا کرنے کے لیے، اس لنک پر عمل کریں : یہاں آپ بالکل وہی آپریٹنگ سسٹم منتخب کر سکتے ہیں جس کی آپ کو ضرورت ہے۔ ڈاؤن لوڈ پر کلک کریں ، لیکن ڈاؤن لوڈ کرنے کے بجائے ہمیں یہ ونڈو نظر آئے گی: گمشدہ نہ ہوں، بس No شکریہ نام کا بٹن تلاش کریں، بس میرا ڈاؤن لوڈ شروع کریں ، اور ڈاؤن لوڈ شروع ہو جائے گا۔ وہ ایسا کیوں کر رہے ہیں؟ شاید، تاکہ زیادہ لوگ ان کے ساتھ رجسٹر ہوں، یہ ہمارے لیے اہم نہیں ہے۔ کامیاب ڈاؤن لوڈ کرنے کے بعد، انسٹالیشن فائل چلائیں۔ MacOS پر یہ اس طرح لگتا ہے: بس آئیکن کو گھسیٹیں اور بس، انسٹالیشن مکمل ہو گئی۔ اتنا مشکل نہیں جتنا خود MySQL انسٹال کرنا، ٹھیک ہے؟ یا ہم ابھی اس کے عادی ہو چکے ہیں اور زیادہ تجربہ کار ہو گئے ہیں؛) اس کام کا دوسرا حصہ اپنے ڈیٹا بیس سے رابطہ قائم کرنا ہے۔ اس کے لیے کیا ضرورت ہے؟ MySQL کنکشنز کے آگے جمع کے نشان پر کلک کریں: ظاہر ہونے والی ونڈو میں، ضروری ڈیٹا درج کریں:- کنکشن کا نام - ہمارے کنکشن کا نام۔ ایسے نام لکھیں جو ممکن حد تک واضح ہوں تاکہ بعد میں شناخت میں کوئی پریشانی نہ ہو۔ میں اس کنکشن کو JRTB_DB کا نام دیتا ہوں ؛
- میزبان نام - پہلے ہی مقامی 127.0.0.1 (عرف لوکل ہوسٹ) کے طور پر سیٹ کیا جائے گا۔ ہمارے معاملے میں، کچھ بھی تبدیل کرنے کی ضرورت نہیں ہے، کیونکہ ڈیٹا بیس کمپیوٹر پر انسٹال ہے، لیکن اگر ڈیٹا بیس کہیں اور ہے، تو میزبان (اس مشین کا آئی پی جس پر ڈیٹا بیس چل رہا ہے) کو اس کے مطابق تبدیل کرنے کی ضرورت ہے۔
- صارف نام - اگر ضروری ہو تو آپ اپنے صارف کی بھی وضاحت کر سکتے ہیں۔ اگر آپ نے اس کلید میں کچھ شامل نہیں کیا ہے، تو اسے بغیر تبدیلی کے چھوڑ دیں۔
- پاس ورڈ - کیچین میں اسٹور پر کلک کریں اور بالکل وہی پاس ورڈ سیٹ کریں جو آپ نے اپنے لیے سیٹ کیا ہے۔ میں نے سب کچھ آسان چھوڑ دیا ۔
GO TO FULL VERSION