آموزش برنامه نویسی پایتون و Django
2.79K subscribers
272 photos
557 videos
52 files
2.67K links
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs

* تعرفه تبلیغات:
https://t.me/+w-o6dHW5O31jMWNk
Download Telegram
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏مثال عملی: یافتن مشتریانی که هرگز سفارشی ثبت نکرده‌اند

‏ساده‌ترین راه برای پیدا کردن مشتری‌های بی‌سفارش، استفاده از LEFT JOIN بین جدول Customers و Orders هست. بعدش تو قسمت WHERE بگو اونایی رو می‌خوام که order_idشون IS NULL باشه! 🕵️‍♀️ خیلی کاربردیه!

‏تصور کن دو تا دفتر داری، یکی برای مشتری‌ها، یکی برای سفارش‌ها. حالا می‌خوای بدونی کدوم مشتری‌ها اسمشون تو دفتر سفارش‌ها نیست. این دقیقا همون کاریه که این کوئری انجام میده! 💡

‏یه روش دیگه که خیلی هم سریع عمل می‌کنه، استفاده از NOT EXISTS با یه ساب‌کوئری (Subquery) هست. تو ساب‌کوئری چک می‌کنی که آیا سفارشی برای اون مشتری وجود داره یا نه. اگه نبود، یعنی مشتری ماست! 🚀

‏اگه دوست داری از NOT IN استفاده کنی، می‌تونی آی‌دی مشتری‌هایی که سفارش دادن رو تو یه ساب‌کوئری لیست کنی و بعدش بگی اونایی رو بهم بده که آی‌دی‌شون تو اون لیست نیست. فقط مواظب NULL تو ساب‌کوئری باش! 🚨

‏یادت باشه که حتماً باید جدول مشتری‌ها و سفارش‌ها رو با ستون مشترک (معمولاً customer_id) به هم وصل کنی. این کلید ارتباطیه! 🔑 بدون اون گُم می‌شی!

‏همیشه برای خوندایی بهتر، اسم جداولت رو معنی‌دار بذار. مثلاً customers و orders. اینجوری خودت یا هرکی دیگه بعداً کوئری رو می‌بینه، راحت متوجه میشه. 😉

‏چرا این کوئری مهمه؟ چون باهاش می‌تونی کمپین‌های بازاریابی هدفمند برای جذب دوباره این مشتریان راه‌اندازی کنی یا بهشون پیشنهادهای ویژه بدی! 🎁 خیلی بدردبخوره!

‏اگه جدول سفارشاتت خیلی بزرگه، حتماً روی customer_id توی جدول Orders ایندکس (Index) بذار. این کار سرعت کوئریت رو حسابی بالا می‌بره!

‏همیشه قبل از اجرای کوئری روی داده‌های اصلی، با یه مقدار داده نمونه (Sample Data) تستش کن تا مطمئن بشی نتیجه‌ای که می‌خوای رو بهت میده. اینجوری خیالت راحته!

‏فکر کن می‌خوای بدونی کدوم دانشجوها تو هیچ کلاسی ثبت‌نام نکردن. این کوئری دقیقاً همین کارو برای مشتری‌ها و سفارش‌ها انجام میده. جالبه نه؟ 🤔


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏تکنیک IS NULL: پیدا کردن رکوردهای بدون تطابق

‏وقتی دنبال داده‌های "خالی" تو جدول MySQL هستی، از IS NULL استفاده کن! مثلاً WHERE ستون_من IS NULL 💡🔥

‏اگه می‌خوای رکوردهایی رو پیدا کنی که یه فیلدشون مقدار نداره، IS NULL بهترین دوستته. نگران مقدار اشتباه نباش! 😎

‏IS NULL برای چک کردن مقادیر تهی یا null عالیه. مثل پیدا کردن خونه‌هایی که آدرس ندارن! 🏠🔍

‏تو شرط WHERE از IS NULL استفاده کن تا رکوردهایی که مقادیرشون مشخص نیست رو فیلتر کنی.

‏یادت باشه IS NULL رو برای فیلدهایی که null پذیرن استفاده کنی، نه همه فیلدها. 😉

‏اگه می‌خوای رکوردهایی که مقدار دارن رو پیدا کنی، از IS NOT NULL استفاده کن! 🤩

‏با IS NULL می‌تونی داده‌های ناقص رو پیدا کنی و اونا رو درست کنی. یه راه حل سریع! 🚀

‏گاهی اوقات یه ستون مقدار نداره (null) و IS NULL به دادت می‌رسه! 👌

‏IS NULL یه ابزار ضروری برای مدیریت داده‌هاست، حتماً یادش بگیر! 😎

‏استفاده از IS NULL، سریع و ساده‌س. دیگه لازم نیست دنبال راه‌های پیچیده باشی! 🥳


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏ترکیب LEFT JOIN و INNER JOIN در یک کوئری

‏وقتی LEFT JOIN و INNER JOIN رو قاطی می‌کنی، اول INNER JOIN رو بنویس تا فیلترش زودتر اعمال شه و سرعتت بره بالا 🚀.

‏اگه تو LEFT JOIN شرط WHERE گذاشتی، حواست باشه! ممکنه ردیف‌هایی که انتظار داری رو نشون نده. به جاش بذار تو ON!💡

‏یادت باشه، LEFT JOIN همه ردیف‌های جدول سمت چپ رو میاره، حتی اگه تو جدول سمت راست چیزی پیدا نکنه. با INNER JOIN فقط ردیف‌های مشترک رو داری.

‏وقتی چندتا JOIN داری، ترتیبشون خیلی مهمه! اول اونایی که بیشتر فیلتر می‌کنن رو بذار. اینجوری MySQL کمتر گیج می‌زنه.🤓

‏یه وقتایی می‌تونی به جای ترکیب JOINها از subquery استفاده کنی. شاید خوندنش راحت‌تر باشه، ولی حواست به performance باشه!🔥

‏اگه میخوای ردیف‌هایی از LEFT JOIN رو پیدا کنی که تو جدول سمت راست نیستن، از WHERE [نام ستون] IS NULL استفاده کن. خیلی کار راه بندازه! 😎

‏تو ترکیب JOINها، اسم جدول‌ها رو کوتاه کن (alias) تا کوئریت خواناتر شه. مثلاً به جای customers بنویس c. 😇

‏اگه LEFT JOIN زدی و دیدی داره خیلی کند کار می‌کنه، حتماً ایندکس‌هات رو چک کن. شاید یه ایندکس کم داری!🤔

‏موقعی که LEFT JOIN و INNER JOIN رو ترکیب می‌کنی، حواست باشه کدوم جدول اصلیته. یعنی کدوم جدولیه که حتماً باید همه‌ی ردیف‌هاش باشه.🫂

‏برای اینکه بفهمی کوئریت درست کار می‌کنه، اول یه مثال کوچیک با داده‌های تستی بزن. بعد برو سراغ داده‌های اصلی.💯


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏کلید اصلی (Primary Key) و نقش آن در JOIN

‏کلید اصلی مثل شناسنامه هر ردیفه تو جدول MySQL، بدون اون نمی‌شه مطمئن شد کدوم ردیف رو داری می‌بینی! 🆔

‏وقتی داری JOIN می‌زنی، کلید اصلی رو به کلید خارجی جدول دیگه وصل می‌کنی تا داده‌ها رو درست به هم ربط بدی. 🤝🔗

‏اگه کلید اصلی نداشته باشی، JOIN کردن مثل پیدا کردن سوزن تو انبار کاهه! 🤯🌾

‏استفاده درست از کلید اصلی توی JOIN، سرعت کوئری‌هات رو فوق‌العاده بالا می‌بره. 🚀

‏به کلید اصلی به چشم ستون مهمی که نباید تکراری باشه و NULL هم نشه نگاه کن. 😉

‏وقتی می‌خوای دو تا جدول رو به هم وصل کنی، فکر کن کلید اصلی مثل یه قلابه که ازش برای گرفتن اطلاعات از جدول دیگه استفاده می‌کنی. 🎣💡

‏برای بهینه‌سازی، حتماً روی ستون کلید اصلی ایندکس (Index) بذار. خیلی فرق می‌کنه! 💯👍

‏یادت باشه، کلید اصلی فقط برای شناسه نیست، کلی کاربرد تو طراحی دیتابیس داره. 🌟🗄️

‏اگه از کلید اصلی درست استفاده کنی، احتمال خطا توی داده‌هات خیلی کم می‌شه. خیال راحت! 😊🛡️

‏کلید اصلی کلید جادویی برای دسترسی سریع و امن به داده‌ها در عملیات JOIN هست. جدی بگیرش! 🧙‍♂️🔑


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏مفهوم OUTER JOIN: فراتر از اشتراکات

‏Outer Join چیه؟ 🤔 مثل اینه که دو تا جعبه پازل 🧩 رو با هم ترکیب کنی، هم اون تیکه‌های مشترک رو داری و هم تیکه‌هایی که فقط تو یه جعبه هستن!

‏LEFT OUTER JOIN: همه چیز از جعبه‌ی سمت چپ ⬅️ میاد، حتی اگه تو جعبه‌ی راست ➡️ هم چیزی نداشته باشه.

‏RIGHT OUTER JOIN: همه چیز از جعبه‌ی سمت راست ➡️ میاد، حتی اگه تو جعبه‌ی چپ ⬅️ هم چیزی نداشته باشه.

‏FULL OUTER JOIN: این دیگه همه‌ی تیکه‌ها رو با هم داره! 🥳 هم از چپ و هم از راست. (تو MySQL پشتیبانی نمی‌شه، باید با UNION بسازیش)

‏کاربردش کجاست؟ 🧐 مثلاً می‌خوای ببینی کدوم مشتری‌ها خرید نکردن (LEFT OUTER JOIN) یا کدوم محصولات فروش نداشتن (RIGHT OUTER JOIN). 🛒

‏وقتی JOIN می‌زنی، حواست به NULL ها باشه! ⚠️ چون تو بعضی جاها ممکنه یه سری اطلاعات نداشته باشی.

‏ON شرط مهمی داره! 🔑 اون شرطی که مشخص می‌کنه دو تا جدول چجوری باید به هم وصل بشن (مثلاً بر اساس یه شناسه).

‏بهترین کار اینه که قبلش یه نمودار از جدولهات 📊 بکشی و ببینی دقیقا چی می‌خوای.

‏بیشتر تمرین کن! 💪 با مثال‌های مختلف کار کن تا قلقش دستت بیاد. 🤓🔥

‏اگه میخوای بفهمی کدوم ردیف‌ها تو join نیستن، از IS NULL استفاده کن. 💡


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏استفاده از STRAIGHT_JOIN برای کنترل ترتیب اجرا

‏یه وقتایی MySQL خودش تصمیم می‌گیره چطوری جدول‌ها رو join کنه، ولی ما می‌دونیم بهتره! 🔥 STRAIGHT_JOIN اینجاست که بهش بگیم "نه، خودمون می‌دونیم کدوم اول باید بیاد!" 😉

‏اگه دیدی query هات کند شده و حس می‌کنی MySQL داره راه رو اشتباه می‌ره، STRAIGHT_JOIN رو امتحان کن. شاید جواب همینه! 💡

‏با STRAIGHT_JOIN، تو دقیقا مشخص می‌کنی کدوم جدول اول باشه و کدوم دوم. اینجوری کنترل بیشتری رو query داری. 😎

‏یادت باشه، STRAIGHT_JOIN برای وقتیه که مطمئنی از ترتیب Join که خودت انتخاب کردی. اگه اشتباه کنی، بدتر می‌شه ها! 😅

‏وقتی داری با جدول‌های خیلی بزرگ سر و کله می‌زنی، STRAIGHT_JOIN می‌تونه یه قهرمان مخفی باشه برای بهینه‌سازی!

‏قبل از اینکه StraightJOIN بزنی، حتما explain plan رو چک کن که ببینی MySQL چطور داره کار می‌کنه. اون وقت بفهمی چرا StraightJOIN لازمه. 🤔

‏با Straight_JOIN، می‌تونی مطمئن بشی که index های درست روی جدول‌ها استفاده می‌شن. خیلی مهمه! 👍

‏اگه query هات گاهی سریع و گاهی کند هستن، شاید دلیلش همین باشه که MySQL همیشه ترتیب Join رو بهینه نمی‌کنه. Straight_JOIN کمک می‌کنه! 🚀

‏فکر کن Straight_JOIN مثل اینه که به GPS بگی "من از این جاده می‌رم!" به جای اینکه بذاری خودش مسیر رو انتخاب کنه. 🗺️

‏حواست باشه که Straight_JOIN بیشتر روی join های دو جدول اثر داره. اگه join های پیچیده‌تری داری، شاید نیاز به راه حل‌های دیگه‌ای باشه. 😉


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏بازنویسی یک کوئری با Subquery به کوئری با JOIN

‏JOINها معمولا سریع‌ترن چون بهینه‌ساز MySQL بهتر می‌فهمتشون و بهینه‌تر اجراشون می‌کنه! 🚀

‏کد خواناتر با JOIN! به جای تو در تو نوشتن، رابطه‌ی جدول‌ها رو صاف و پوست‌کنده نشون بده.

‏از ساب‌کوئری‌های همبسته (Correlated) فرار کن! 🏃‍♂️ اینا قاتل پرفورمنس‌ان. یه LEFT JOIN ساده معمولا جاشو می‌گیره.

‏به جای WHERE id IN (SELECT id FROM ...)، یه INNER JOIN شیک و مجلسی بنویس. هم سریع‌تره هم قشنگ‌تر! 😉

‏وقتی NOT IN با مقادیر NULL به مشکل می‌خوره، LEFT JOIN با شرط WHERE col IS NULL مثل یه قهرمان نجاتت می‌ده! 🦸

‏ساب‌کوئری تو قسمت SELECT برای هر سطر اجرا می‌شه و کارو کند می‌کنه. با LEFT JOIN یه ضرب همه دیتا رو بیار. 💡

‏همیشه قبل و بعد از تغییر، یه EXPLAIN بگیر تا با چشم خودت ببینی چقدر اوضاع بهتر شده. ابزار خودته! 🔬

‏اگه EXISTS داری، فکر کن ببین نمی‌شه با یه INNER JOIN یا SEMI-JOIN همون کارو انجام بدی؟ اغلب می‌شه و خواناتر هم هست. 🤔

‏یادت باشه، هدف اصلی از این بازنویسی معمولا بهتر شدن پرفورمنسه. پس همیشه عملکرد رو بسنج! ⏱️🔥

‏لازم نیست یهو کل کوئری رو عوض کنی. قدم به قدم یکی از ساب‌کوئری‌ها رو به JOIN تبدیل کن و تست بگیر. آهسته و پیوسته! 🐢


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir