آموزش ویدیویی پایگاه داده، SQL و NoSQL و ...
2.08K subscribers
228 photos
117 videos
1.85K links
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs

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


هشدار جدی وزارت ارتباطات به سازمان غذا و دارو: راه‌اندازی سامانه ملی بدون مجوز ممنوع!



🌿🌿 وزارت ارتباطات با ارسال نامه‌ای رسمی به رئیس سازمان غذا و دارو، هشدار داده است که هرگونه راه‌اندازی سامانه جدید با گستره ملی، تنها با کسب مجوز از این وزارتخانه امکان‌پذیر خواهد بود.

🟣 طبق گزارش دیجیاتو و بر اساس ضوابط فروش اینترنتی دارو، پلتفرم‌ها برای ارائه خدمات، باید به سامانه واسط تحت نظارت سازمان غذا و دارو متصل شوند. در همین راستا، «محمدمحسن صدر»، معاون وزیر ارتباطات و رئیس سازمان فناوری اطلاعات، از سازمان غذا و دارو خواسته در صورت ایجاد چنین سامانه‌ای، مجوزهای لازم را از وزارت ارتباطات دریافت کند.


🔴 همچنین، سازمان غذا و دارو موظف شده تا زمان تعیین تکلیف نهایی این موضوع، از ادامه اقدامات برای ایجاد این سامانه خودداری کند.


🔵 پیش‌تر در کمیسیون راهبری اقتصاد دیجیتال نیز اعلام شده بود که دستورالعمل ایجاد «سامانه مرجع» سازمان غذا و دارو، مغایر با قانون برنامه و قانون دوام (مدیریت داده‌ها و اطلاعات ملی) است. این قوانین صراحتاً راه‌اندازی هر سامانه‌ای در دولت را به کسب مجوز از وزارت ارتباطات و فناوری اطلاعات منوط کرده‌اند.


#وزارت_ارتباطات #سازمان_غذا_و_دارو #سامانه_ملی #مجوز #اقتصاد_دیجیتال


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

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

آدرس کانال اصلی:

https://t.me/Tu_24

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏استفاده از PRAGMA برای مشاهده اطلاعات جدول

نکته 1:
‏عبارت PRAGMA tableinfo(tablename) به عنوان ابزاری برای بازرسی ساختار داخلی یک جدول مشخص، شامل فهرست ستون‌ها و جزئیات آن‌ها، به کار می‌رود.

نکته 2:
‏خروجی PRAGMA table_info شامل مجموعه‌ای از ردیف‌ها است که هر ردیف معرف یک ستون بوده و شامل اطلاعاتی نظیر cid (شناسه ستون)، name (نام ستون) و type (نوع داده) می‌باشد.

نکته 3:
‏ستون type در خروجی این PRAGMA، نوع داده‌ای را که در زمان تعریف جدول (DDL) برای ستون تعیین شده است، نمایش می‌دهد، هرچند که SQLite دارای نوع‌بندی پویا است.

نکته 4:
‏ستون notnull در خروجی این تابع، وضعیت اعمال محدودیت NOT NULL را برای ستون مشخص می‌کند؛ مقدار 1 نشان‌دهنده الزام به داشتن مقدار غیرتهی است.

نکته 5:
‏ستون dflt_value (مقدار پیش‌فرض) در خروجی، مقدار تعریف شده برای ستون را در صورت عدم ارائه صریح مقدار در زمان درج (INSERT) نمایش می‌دهد.

نکته 6:
‏ستون pk (کلید اصلی) یک شاخص عددی است که وضعیت ستون را به عنوان بخشی از کلید اصلی (Primary Key) مشخص می‌کند؛ مقادیر بزرگتر از صفر نشان‌دهنده عضویت در کلید اصلی مرکب است.

نکته 7:
‏PRAGMA tableinfo یک روش استاندارد و مستقل از پلتفرم برای استخراج فراداده‌ها (Metadata) یا شمای جدول در محیط SQLite، بدون نیاز به پرس‌وجو از جدول سیستمی sqlitemaster، است.

نکته 8:
‏از PRAGMA table_info می‌توان در برنامه‌های کاربردی برای اعتبارسنجی یا مهاجرت شمای داده (Schema Migration) با بازیابی خودکار ساختار جدول استفاده نمود.

نکته 9:
‏این تابع اطلاعاتی در مورد اندیس‌های ثانویه یا محدودیت‌های کلید خارجی مرتبط با جدول را مستقیماً ارائه نمی‌دهد و برای این منظور نیاز به توابع PRAGMA دیگری نظیر PRAGMA index_list است.

نکته 10:
‏خروجی PRAGMA table_info به صورت یک مجموعه نتایج جدولی ارائه می‌شود که امکان پردازش و تحلیل آن را با استفاده از APIهای برنامه‌نویسی یا ابزارهای خط فرمان فراهم می‌سازد.


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏تراکنش‌ها در SQLite

نکته 1:
‏تراکنش (Transaction) در SQLite مجموعه‌ای از یک یا چند عملیات پایگاه داده است که به صورت یک واحد منطقی کار انجام شده تلقی می‌شوند و یا همگی موفق می‌شوند یا همگی لغو می‌گردند.

نکته 2:
‏تراکنش‌ها برای تضمین ویژگی‌های ACID (Atomicity, Consistency, Isolation, Durability) در پایگاه داده ضروری هستند و صحت و قابلیت اطمینان داده‌ها را حفظ می‌کنند.

نکته 3:
‏Atomicity (اتمیسیته) تضمین می‌کند که تمامی عملیات‌های درون یک تراکنش به طور کامل انجام شوند (COMMIT) یا در صورت بروز مشکل به طور کامل لغو شوند (ROLLBACK).

نکته 4:
‏Durability (ماندگاری) اطمینان می‌دهد که پس از موفقیت‌آمیز بودن یک COMMIT، تغییرات اعمال شده به طور دائمی در فایل پایگاه داده ذخیره شده و در برابر خرابی‌های سیستم مقاوم باشند.

نکته 5:
‏SQLite به صورت پیش‌فرض در حالت Auto-commit عمل می‌کند، به این معنا که هر دستور DML به صورت خودکار به عنوان یک تراکنش مستقل تلقی شده و بلافاصله COMMIT می‌شود.

نکته 6:
‏برای اجرای چندین دستور به صورت یک تراکنش واحد، باید از عبارت BEGIN TRANSACTION یا BEGIN IMMEDIATE/DEFERRED استفاده کرده و در نهایت با COMMIT یا ROLLBACK آن را پایان داد.

نکته 7:
‏Isolation (ایزوله‌سازی) تضمین می‌کند که تغییرات ایجاد شده توسط یک تراکنش، تا زمان COMMIT شدن، برای سایر تراکنش‌های در حال اجرا قابل مشاهده نباشد.

نکته 8:
‏SQLite از قفل‌گذاری در سطح فایل برای مدیریت همزمانی (Concurrency) استفاده می‌کند که اجرای تراکنش‌های همزمان را در محیط‌های چند کاربره مدیریت می‌نماید.

نکته 9:
‏استفاده از حالت Write-Ahead Logging (WAL) می‌تواند ایزوله‌سازی و همزمانی را در عملیات خواندن و نوشتن بهبود بخشد، زیرا خواندن‌ها را بدون قفل کردن فایل اصلی داده امکان‌پذیر می‌سازد.

نکته 10:
‏ROLLBACK به عنوان سازوکاری برای بازگرداندن پایگاه داده به وضعیت پایدار قبل از شروع تراکنش عمل می‌کند و تمامی تغییرات موقت اعمال شده در طول آن تراکنش را خنثی می‌سازد.


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

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

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

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

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

‏اگر داری SELF JOIN می‌زنی، حتماً از Alias استفاده کن! 🤯 اینجوری می‌تونی به جداولت اسم‌های مستعار بدی و بفهمی هر ستون از کجا میاد. 😉

‏وقتی SELF JOIN داری، Alias ها کمک می‌کنن که بین دو تا جدول یهویی قاطی نکنی. 🤔 مثلاً یه جدول داری و می‌خوای ارتباطات داخلش رو ببینی. با Alias راحت‌تر میشه. 🤓

‏Alias ها مثل اسم کوچیک هستن. بجای اینکه همش اسم کامل جدول رو تایپ کنی، با Alias کارت راحت‌تر میشه. 😎

‏اگه Alias نزنی، SQL گیج میشه و نمی‌فهمه کدوم ستون رو باید انتخاب کنه. 😅 پس Alias بزن تا SQLت خوشحال بشه! 😊

‏فرض کن یه جدول داری برای لیست دوستا. با Alias می‌تونی ببینی کی دوست کیه. 🤩 بدون Alias، اصلاً نمی‌شه این کارو کرد! 🤦‍♀️

‏یه Alias خوب، اسمش باید معنی‌دار باشه. 💡 مثلاً جای "table1" بذار "دوست_اول". اینجوری کدت خواناتر میشه. 🤌

‏SELF JOIN با Alias خیلی قدرتمنده! 🔥 می‌تونی ساختارهای پیچیده رو توی دیتابیس خودت مدل‌سازی کنی. 💪

‏یادت باشه، Alias زدن باعث میشه SQLت سریع‌تر عمل کنه. 🚀 پس Alias بزن و سرعت دیتابیس‌تو ببر بالا! 📈

‏وقتی Alias می‌زنی، دیگه نیازی نیست کل اسم جدول رو تکرار کنی. فقط اسم مستعار رو می‌نویسی و کارت راه می‌افته. 👌

‏خلاصه، Alias تو SELF JOIN یه چیز ضروریه! 👍 نذار کدت پیچیده بشه و از Alias استفاده کن! 😉


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏استفاده از حافظه کش (Buffer Cache)

نکته 1:
‏بافر کَش (Buffer Cache) چیه؟ 🤔 مثل یه میز کار بزرگ تو حافظه RAM می‌مونه که SQLite داده‌هایی رو که زیاد لازم داره، روش می‌ذاره تا سریع بهشون دسترسی پیدا کنه. 🧠

نکته 2:
‏هدف اصلی کش اینه که نیاز به خواندن کند از دیسک رو کم کنه. اگه داده تو کش باشه، سرعتت مثل موشک می‌شه! 🚀🔥

نکته 3:
‏وقتی یه صفحه (Page) از دیتابیس رو می‌خونی، SQLite یه کپی ازش رو تو بافر کش نگه می‌داره. اینجوری اگه دوباره بخوایش، دیگه سراغ دیسک نمی‌ره. 💡

نکته 4:
‏تو می‌تونی با دستور PRAGMA cache_size به SQLite بگی که می‌خوای کش چقدر بزرگ باشه (بر حسب تعداد صفحات). معمولاً هرچی بزرگتر باشه، بهتره! 📏

نکته 5:
‏اگه کش کوچیک باشه، SQLite مجبوره مدام صفحات قدیمی رو از کش بیرون بندازه تا جا برای صفحات جدید باز بشه. این یعنی کندی! 🐌

نکته 6:
‏وقتی یه داده رو تغییر می‌دی، اول تغییرات روی نسخه‌ی داخل کش اعمال می‌شه، بعداً (موقع COMMIT) روی دیسک نوشته می‌شه. 📝💾

نکته 7:
‏اگه از WAL Mode (Write-Ahead Logging) استفاده کنی، مدیریت کش SQLite خیلی هوشمندتر می‌شه و کارایی خواندن‌ها حین نوشتن بالا می‌ره. 📈

نکته 8:
‏اگه حجم کاریت بیشتر خواندن هست، بزرگ کردن کش یه سرمایه‌گذاری عالی برای بهینه‌سازی عملکرد دیتابیسه. هرچند که فضای بیشتری از RAM می‌گیره. 💰

نکته 9:
‏یه نکته جالب: وقتی COMMIT می‌زنی، SQLite نسخه‌هایی از صفحات تغییر یافته تو کش رو مجبور می‌کنه که روی دیسک ذخیره بشن. این تضمین ماندگاری داده‌هاست. 🔒

نکته 10:
‏می‌تونی با PRAGMA incremental_vacuum از SQLite بخوای که فقط یه بخش از فضای خالی دیتابیس رو بازیابی کنه، این کار فقط روی صفحات کش‌شده انجام می‌شه. کاربردی و عملی! 😎


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

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

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

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

🟣 موضوع : ‏تاریخچه و تکامل NoSQL

نکته :

‏NoSQL هنوزم در حال تغییره و بهتر شدنه. 🔄 همیشه چیز جدیدی برای یادگیری هست! 🔥 پس کنجکاو بمون. 👀


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

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

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

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

🟣 موضوع : ‏Database Migration و ابزارها (Flyway, Liquibase)

نکته :

‏تغییرات رو کوچیک و incremental اعمال کن! 🐢 به جای اینکه یه migration خیلی بزرگ بنویسی که کلی تغییرات داره، سعی کن هر migration یه تغییر کوچیک و مشخص رو انجام بده. اینجوری مدیریت و دیباگ کردنشون خیلی آسون‌تر میشه و ریسک خطا کم میشه. قدم به قدم جلو برو! 👣


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

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

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

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

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

‏خودتو بهتر بشناس! Self JOIN مثل اینه که یه عکس از خودت بگیری و بعد باهاش مقایسه‌ش کنی، تا مثلاً ببینی کی از همه بلندتره! 🕵️‍♀️💪

‏فکر کن یه جدول داری از کارمندها و مدیرهاشون. Self JOIN بهت کمک می‌کنه ببینی کی مدیر کیه، بدون اینکه بخوای یه جدول جدید بسازی! 🧑‍💼➡️🧑‍💼

‏اگه می‌خوای یه لیست از همه محصولاتت داشته باشی که قیمت‌شون از میانگین قیمتشون بیشتره، Self JOIN یه قهرمانه! 💰📈

‏با Self JOIN می‌تونی روابط پیچیده توی داده‌هات رو مثل نمودار درختی باز کنی. خیلی باحاله، نه؟ 🌳

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

‏فرض کن یه جدول داری از شهرها و کشورهاشون. Self JOIN می‌تونه بهت بگه کدوم شهرها توی کدوم کشورها هستن. 🏙️🌍

‏برای پیدا کردن الگوهای تکراری یا روابط زنجیره‌ای توی داده‌هات، Self JOIN رو امتحان کن. مثل پیدا کردن ردپا! 🐾🔍

‏قبلاً فکر می‌کردی Self JOIN خیلی سخته؟ اصلاً اینطور نیست! مثل بازی کردن با قطعات لگو هست، فقط باید بفهمی چطور وصلشون کنی. 🧩💡

‏اگه می‌خوای ببینی کدوم مشتری‌هات بیشتر از بقیه خرید کردن، Self JOIN می‌تونه کمکت کنه. مشتری‌های ویژه رو پیدا کن! 🌟🛍️

‏یادت باشه، Self JOIN فقط برای جدول‌های تودرتو نیست. برای مقایسه‌های ساده‌تر هم خیلی کاربردیه. خلاق باش! 😉🚀


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مبانی ACID

نکته 1:
‏ACID چیه؟ 🤔 مثل یه قول و قراره که دیتابیس (مثل SQLite) بهت می‌ده تا مطمئن شی کارهاش رو درست و امن انجام می‌ده. تضمین کیفیت! 🤝

نکته 2:
‏A مخفف Atomicity (تجزیه‌ناپذیری) هست. یعنی یه تراکنش یا کامل انجام می‌شه، یا اصلاً انجام نمی‌شه (همه یا هیچ). وسط راه موندن نداریم! 🚫

نکته 3:
‏C مخفف Consistency (سازگاری) هست. یعنی هر تراکنش دیتابیس رو از یه حالت معتبر به یه حالت معتبر دیگه می‌بره. اطلاعاتت همیشه قانون‌مند باقی می‌مونن. ⚖️

نکته 4:
‏I مخفف Isolation (انزوا) هست. یعنی اگه چند تا تراکنش همزمان در حال اجرا باشن، هیچ‌کدوم کار اون یکی رو مزاحم نمی‌شن. انگار هر کدوم تو اتاق خودشونن. 🚪

نکته 5:
‏D مخفف Durability (ماندگاری) هست. یعنی وقتی یه تراکنش با موفقیت COMMIT می‌شه، تغییراتش حتی اگه برق قطع شه یا سیستم کرش کنه، ثبت شده و از بین نمیره. هاردکور! 💾🔥

نکته 6:
‏برای فهم بهتر Atomicity، انتقال پول رو تصور کن: اگه پول از حساب اول کم بشه ولی به حساب دوم اضافه نشه، Rollback می‌شه. یا جابه‌جا می‌شه یا نمی‌شه! 💰

نکته 7:
‏SQLite با استفاده از فایل‌های Journal (گزارش‌نویسی) و مکانیزم‌های قفل‌گذاری، سعی می‌کنه اصول ACID رو تا جای ممکن رعایت کنه. 🛠️💡

نکته 8:
‏Isolation توی SQLite یه کم با بقیه دیتابیس‌های بزرگ فرق داره. معمولاً از روش Serializable یا قفل کردن کل دیتابیس استفاده می‌کنه تا سادگی‌اش حفظ بشه. 🤏

نکته 9:
‏Durability یعنی اطمینان پیدا کن که وقتی COMMIT رو زدی، داده‌ها واقعاً روی دیسک ذخیره شدن، نه فقط توی حافظه موقت. (با دستور PRAGMA synchronous = FULL سختگیرتر می‌شه). 💯

نکته 10:
‏در نهایت، هدف از رعایت ACID اینه که بتونی به دیتای دیتابیست اعتماد کامل کنی. اگه دیتابیس ACID نباشه، زندگی برنامه‌نویس خیلی سخت می‌شه! 😩😎


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏تأیید تراکنش (COMMIT)

نکته 1:
‏دستور COMMIT یک عبارت تراکنشی حیاتی در SQLite است که برای تأیید نهایی و دائمی‌سازی تمامی تغییرات اعمال شده در طول یک تراکنش آغاز شده به کار می‌رود.

نکته 2:
‏پس از اجرای COMMIT، تغییرات اعمال شده توسط دستورات DML (مانند INSERT, UPDATE, DELETE) به عنوان بخشی از وضعیت پایدار پایگاه داده تلقی شده و قابل بازگشت نیستند.

نکته 3:
‏COMMIT خاصیت ماندگاری (Durability) از مبانی ACID را تضمین می‌کند؛ به این معنا که داده‌ها به طور مؤثر در فضای ذخیره‌سازی غیرفرار (دیسک) ثبت شده‌اند.

نکته 4:
‏پس از موفقیت‌آمیز بودن COMMIT، هرگونه قفل نوشتن (Write Lock) که در طول تراکنش بر روی فایل پایگاه داده اعمال شده بود، آزاد می‌شود و به سایر تراکنش‌ها اجازه دسترسی داده می‌شود.

نکته 5:
‏هنگامی که COMMIT اجرا می‌شود، موتور SQLite مراحل لازم برای ادغام تغییرات از Rollback Journal یا Write-Ahead Log (WAL) به فایل اصلی داده را انجام می‌دهد.

نکته 6:
‏اگرچه SQLite به صورت پیش‌فرض در حالت Auto-commit است، استفاده صریح از COMMIT پس از BEGIN TRANSACTION برای کنترل مرزهای منطقی تغییرات الزامی است.

نکته 7:
‏در صورت بروز هرگونه خطا یا خرابی سیستمی قبل از انجام COMMIT، تمامی تغییرات اعمال شده در طول تراکنش، از طریق مکانیزم Rollback، لغو خواهند شد.

نکته 8:
‏COMMIT یک سیگنال به سیستم عامل می‌دهد تا اطمینان حاصل شود که تمامی داده‌های تراکنش به طور کامل از بافرهای حافظه موقت به فضای ذخیره‌سازی دائمی منتقل شده‌اند (Sync).

نکته 9:
‏پس از اجرای موفقیت‌آمیز COMMIT، تراکنش فعلی به پایان می‌رسد و پایگاه داده به حالت Auto-commit باز می‌گردد (مگر اینکه تراکنش بعدی بلافاصله آغاز شود).

نکته 10:
‏استفاده از COMMIT در فواصل زمانی مناسب برای عملیات‌های دسته‌ای بزرگ، ضمن حفظ خواص ACID، موجب بهبود عملکرد و کاهش ریسک از دست رفتن داده در صورت خرابی‌های موضعی می‌شود.


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏کاربرد SQLite در اپلیکیشن‌های موبایل

نکته 1:
‏SQLite به دلیل معماری جاسازی شده (Embedded) و عدم نیاز به سرویس‌دهنده شبکه، به عنوان راهکار پیش‌فرض ذخیره‌سازی داده‌های محلی در سیستم‌عامل‌های موبایل نظیر اندروید و iOS استفاده می‌شود.

نکته 2:
‏حجم بسیار پایین کد و ردپای حافظه کوچک SQLite، آن را به گزینه‌ای ایده‌آل برای دستگاه‌های موبایل که با محدودیت‌های شدید منابع سخت‌افزاری و انرژی روبرو هستند، تبدیل کرده است.

نکته 3:
‏این سامانه قابلیت اجرای تراکنش‌های ACID را در محیط‌های موبایل فراهم می‌کند، که تضمین‌کننده یکپارچگی و پایداری داده‌ها حتی در هنگام قطع اتصال شبکه یا بستن ناگهانی برنامه است.

نکته 4:
‏SQLite امکان ذخیره‌سازی آفلاین (Offline Storage) داده‌ها را برای برنامه‌های موبایل فراهم می‌آورد و به کاربران اجازه می‌دهد بدون اتصال دائمی به شبکه، با داده‌ها تعامل داشته باشند.

نکته 5:
‏قابلیت حمل بالا (High Portability) فایل پایگاه داده SQLite، فرآیندهایی نظیر پشتیبان‌گیری و انتقال داده‌های کاربر بین دستگاه‌ها را با سادگی کپی فایل تسهیل می‌نماید.

نکته 6:
‏عملکرد SQLite در عملیات خواندن (Read Operations) در محیط‌های موبایل بسیار سریع است که برای نمایش سریع رابط کاربری و بارگذاری داده‌ها حائز اهمیت است.

نکته 7:
‏این پایگاه داده به عنوان یک لایه پایگاه داده رابطه‌ای محلی عمل می‌کند و اغلب با مکانیزم‌های همگام‌سازی (Synchronization) برای تبادل داده‌ها با یک پایگاه داده سرور مرکزی ترکیب می‌شود.

نکته 8:
‏به دلیل استفاده گسترده، API‌های دسترسی به SQLite به صورت بومی و بهینه در چارچوب‌های اصلی توسعه موبایل (مانند Java/Kotlin در اندروید و Swift/Objective-C در iOS) ارائه شده‌اند.

نکته 9:
‏طراحی تک‌فرآیندی SQLite و مکانیزم قفل‌گذاری سطح فایل، در محیط‌های موبایل که معمولاً ماهیت تک‌کاربره دارند، به ندرت موجب بروز مشکلات جدی در دسترسی همزمان می‌شود.

نکته 10:
‏توسعه‌دهندگان می‌توانند از قابلیت‌های SQL برای تعریف شمای داده، اعمال محدودیت‌های یکپارچگی و اجرای پرس‌وجوهای پیچیده بر روی داده‌های برنامه‌های موبایل استفاده نمایند.


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 MySQL CURRENT_DATE() & CURRENT_TIME()

🟢 کیفیت : متوسط

🔴 توجه کنید با تنظیمات خود تلگرام می توانید حجم و کیفیت ویدیو را بر اساس سرعت اینترنت خود تنظیم نمایید.

🟣 MySQL tutorial for beginners 🐬

🟢 زبان آموزش: انگلیسی

🟣 دوره MySQL برای مبتدیان


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏صفحات (Pages) و انواع آن‌ها

نکته 1:
‏صفحات (Pages) کوچک‌ترین واحد ذخیره‌سازی و ورودی/خروجی (I/O) در فایل پایگاه داده SQLite محسوب می‌شوند و اندازه‌ای ثابت دارند.

نکته 2:
‏اندازه یک صفحه از ۵۱۲ بایت تا ۶۵۵۳۶ بایت متغیر است و در زمان ایجاد پایگاه داده تعیین شده و در هدر (Header) فایل ثبت می‌شود.

نکته 3:
‏هر صفحه با یک شماره صفحه (Page Number) منحصربه‌فرد آدرس‌دهی می‌شود که صفحه شماره ۱ همواره شامل هدر پایگاه داده و ریشه B-tree طرح‌واره (Schema) است.

نکته 4:
‏صفحات از نظر نوع به طور عمده شامل صفحات B-tree برای داده‌ها و اندیس‌ها، و صفحات سیستمی مانند Freelist Pages هستند.

نکته 5:
‏صفحات B-tree داخلی (Interior Pages) حاوی کلیدها و اشاره‌گرهایی به صفحات فرزند در سطوح پایین‌تر درخت هستند و هیچ داده کاربری را مستقیماً ذخیره نمی‌کنند.

نکته 6:
‏صفحات B-tree برگ (Leaf Pages) پایین‌ترین سطح درخت B-tree را تشکیل می‌دهند و وظیفه نگهداری داده‌های واقعی سطرها در جدول یا مقادیر اندیس را بر عهده دارند.

نکته 7:
‏صفحات Freelist برای ردیابی صفحاتی به کار می‌روند که حاوی داده‌های معتبری نیستند (مانند صفحاتی که تمامی سطرهای آن‌ها حذف شده‌اند) و آماده استفاده مجدد هستند.

نکته 8:
‏هر صفحه دارای یک هدر صفحه (Page Header) در ابتدای خود است که شامل اطلاعاتی مانند نوع صفحه، نشانگرهای فضای آزاد محلی و اشاره‌گر به والدین یا فرزندان (بسته به نوع صفحه) است.

نکته 9:
‏مدیریت حافظه پنهان (Cache Management) SQLite کاملاً بر اساس صفحات صورت می‌گیرد؛ یعنی، داده‌ها از دیسک به حافظه و بالعکس، به صورت واحد صفحه منتقل می‌شوند.

نکته 10:
‏یکپارچگی و سازگاری صفحات در طول تراکنش‌ها با استفاده از مکانیزم‌های Journaling تضمین می‌شود که تغییرات موقت را قبل از دائمی‌سازی در صفحات اصلی ثبت می‌کنند.


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

مقیاس‌بندی ویژگی‌ها یا Feature Scaling بخش مهمی از پیش‌پردازش داده‌هاست.

🔹 چرا مهمه؟
خیلی از الگوریتم‌ها (مثل KNN، SVM، شبکه‌های عصبی) به فاصله یا مقدار وزن حساسن. اگه یه ویژگی مقیاس بزرگ‌تری داشته باشه (مثلاً درآمد به میلیون در مقابل سن به سال)، مدل بیشتر به اون توجه می‌کنه.

🔹 روش‌های رایج:

روش Min-Max Scaling: همه داده‌ها رو به بازه [0,1] یا [−1,1] می‌بره.

روش Standardization (Z-score): داده‌ها رو طوری تغییر میده که میانگین = 0 و واریانس = 1 بشه.

روش Robust Scaling: از میانه و چارک‌ها استفاده می‌کنه → در برابر داده‌های پرت مقاوم‌تره.

به زبان ساده: Feature Scaling یعنی بذاری همه ویژگی‌ها “با یک متر اندازه‌گیری بشن”.

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


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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏بهینه‌سازی پرس‌وجوها با INDEX

نکته 1:
‏وقتی یه کوئری (پرس‌وجو) داری که کند اجرا می‌شه، اولین کاری که می‌کنی اینه که ببینی می‌تونی یه INDEX روی ستون‌های شرط WHERE بسازی یا نه! 🎯🚀

نکته 2:
‏اگه کوئری‌ات خیلی از عملگر LIKE با وایلدکارد در اول (مثل LIKE '%text') استفاده می‌کنه، ایندکس‌سازی کمکی نمی‌کنه. ایندکس فقط وقتی خوبه که وایلدکارد آخر باشه (LIKE 'text%'). 🚫

نکته 3:
‏از دستور جادویی EXPLAIN QUERY PLAN استفاده کن. این دستور بهت می‌گه که SQLite داره از ایندکس استفاده می‌کنه یا نه. اگه نوشت SCAN TABLE، یعنی بهینه‌سازی لازمه! 💡🔥

نکته 4:
‏برای کوئری‌هایی که چندین شرط AND توی WHERE دارن، ایندکس چندستونه (Multi-column Index) بساز. ترتیب ستون‌ها توی ایندکس خیلی مهمه! 🧩

نکته 5:
‏قانون کاردینالیتی: ایندکس رو روی ستون‌هایی بذار که مقادیر منحصر به فرد زیادی دارن (مثلاً ایمیل‌ها). ایندکس روی ستون‌هایی مثل Gender که فقط دو مقدار دارن، بی‌فایده است. 🧍‍♀️🧍

نکته 6:
‏اگه کوئری‌ات از تابع روی یه ستون استفاده می‌کنه (مثلاً WHERE UPPER(name) = 'ALI')، ایندکس روی اون ستون نادیده گرفته می‌شه. تابع رو بردار یا تغییرش بده.

نکته 7:
‏برای بهینه‌سازی ORDER BY، یه ایندکس بساز که ستون‌ها رو به همون ترتیبی که می‌خوای مرتب کنی، شامل بشه. مرتب‌سازی رو سریع می‌کنه! 📈

نکته 8:
‏هدف ایندکس‌گذاری اینه که SQLite بتونه فقط یه بخش کوچک از جدول رو بخونه، نه کل جدول رو. به این می‌گن Index Seek، که از Full Table Scan خیلی سریع‌تره. 🚄

نکته 9:
‏اگه کوئری‌ات هم WHERE و هم ORDER BY داره، یه ایندکس ترکیبی بساز که ستون‌های WHERE اول باشن و بعد ستون‌های ORDER BY. هر دو رو بهینه می‌کنه! 💯

نکته 10:
‏بهینه‌سازی یه فرآیند تکراریه. یه ایندکس بساز، سرعت کوئری رو چک کن. اگه بهتر نشد، ایندکس رو حذف کن و یه مدل دیگه امتحان کن. آزمون و خطا! 🧪😎


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: Apriori - تعریف حداقل اطمینان (Minimum Confidence)

نکته :

‏اگه این عدد خیلی پایین باشه، کلی قانون بی‌ربط بهت نشون می‌ده که گیج می‌شی! 😵


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏بررسی انواع ذخیره‌سازی داده در SQLite

نکته 1:
‏SQLite بر خلاف دیتابیس‌های دیگه، فقط پنج کلاس ذخیره‌سازی داره: NULL, INTEGER, REAL, TEXT و BLOB. به این‌ها می‌گن Storage Classes. 🔢💡

نکته 2:
‏SQLite یه جورایی نوع داده‌ها رو سست (Weakly Typed) در نظر می‌گیره. یعنی اگه یه ستون رو INTEGER تعریف کنی، باز هم می‌تونی توش یه TEXT ذخیره کنی! ⚠️

نکته 3:
‏به جای انواع داده‌های دقیق، SQLite از Affinity Types استفاده می‌کنه. این‌ها فقط پیشنهاد می‌کنن که داده چه نوعی باید داشته باشه، نه اینکه اجباری باشه. 📝

نکته 4:
‏INTEGER برای ذخیره‌ی تمام اعداد صحیح (کوچک و بزرگ) استفاده می‌شه. بسته به اندازه‌ی عدد، از ۱ تا ۸ بایت فضا اشغال می‌کنه. این یعنی فشرده‌سازی! 🤏

نکته 5:
‏REAL برای ذخیره‌ی اعداد اعشاری (شناور) استفاده می‌شه و همیشه تو ۸ بایت (فرمت IEEE 754) ذخیره می‌شه. مثلاً برای قیمت‌ها و مختصات جغرافیایی. 💰

نکته 6:
‏TEXT برای ذخیره‌ی رشته‌ها و متن‌هاست. SQLite این‌ها رو تو فرمت‌های UTF-8، UTF-16be یا UTF-16le ذخیره می‌کنه. UTF-8 برای فارسی و انگلیسی خوبه. 💬

نکته 7:
‏BLOB برای ذخیره‌ی داده‌های باینری خام (مثل تصاویر، فایل‌های صوتی یا فایل‌های فشرده) به کار می‌ره. هیچ نوع پردازش یا تبدیل کاراکتری روش انجام نمی‌شه. 📦🔥

نکته 8:
‏NULL ساده‌ترین نوع ذخیره‌سازیه و یعنی هیچ مقداری ذخیره نشده. تو ستون‌هایی که NOT NULL نباشن، می‌تونی ازش استفاده کنی. 🚪

نکته 9:
‏اگر تو یه ستون TEXT، یه عدد ذخیره کنی، SQLite اون رو به عنوان TEXT ذخیره می‌کنه. اما اگه تو یه ستون INTEGER، یه عدد ذخیره کنی، اون رو به عنوان INTEGER ذخیره می‌کنه (Affinity). 🔄

نکته 10:
‏بهترین نکته اینه که اگه دیتابیس تو نوع داده‌ی سفت و سخت بخواد، باید از Check Constraints (قوانین بررسی) استفاده کنی تا مطمئن شی کاربر فقط داده‌ی درست رو وارد می‌کنه. 🛡️😎


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏حذف جدول (DROP TABLE)

نکته 1:
‏DROP TABLE چیه؟ 🤔 مثل این می‌مونه که کل میز بازی (جدول) و تمام مهره‌های روش (داده‌ها) رو برداری و بندازی دور! غیر قابل بازگشت! 💥

نکته 2:
‏وقتی یه جدول رو DROP می‌کنی، کل ساختار جدول و تمام داده‌های داخلش برای همیشه از بین می‌رن. قبل از اجرا، یه نفس عمیق بکش! 😮‍💨

نکته 3:
‏بعد از DROP TABLE، اگه اون جدول کلید خارجی تو جدول دیگه‌ای بوده، جدول اصلی دیگه به چیزی اشاره نمی‌کنه و باید حواست به این ارتباطات خراب باشه. ⚠️🔗

نکته 4:
‏اگر جدولت ایندکس یا تریگر (ماشه) داشته، با حذف جدول، اون ایندکس‌ها و تریگرها هم به طور خودکار حذف می‌شن. نیازی نیست دستی پاکشون کنی.

نکته 5:
‏اگه می‌خوای یه جدول رو حذف کنی، مطمئن شو که اسمش درسته، وگرنه خطا می‌گیری. برای جلوگیری از خطا، از DROP TABLE IF EXISTS table_name استفاده کن. 💡

نکته 6:
‏DROP TABLE یه عملیات DDL (Data Definition Language) هست و معمولاً در SQLite یه تراکنش Implicit Commit (تأیید خودکار) داره. یعنی بلافاصله اعمال می‌شه. 🚀

نکته 7:
‏با حذف جدول، فضای استفاده شده توسط اون جدول تو فایل دیتابیس خالی می‌شه. اما برای کوچک شدن فایل، باید دستور VACUUM رو هم بعداً اجرا کنی. 🧹

نکته 8:
‏تو نمی‌تونی یه جدول رو در حین اینکه یه تراکنش دیگه داره ازش استفاده می‌کنه، DROP کنی. باید صبر کنی تا اون تراکنش تموم بشه.

نکته 9:
‏قبل از اینکه یه جدول رو DROP کنی، اگه داده‌هاش مهمن، حتماً یه بک‌آپ ازشون بگیر. پشیمونی بعد از DROP سودی نداره! 💾

نکته 10:
‏یه مثال خوب برای استفاده: وقتی داری Schema رو عوض می‌کنی و جدول جدید ساختی و داده‌ها رو منتقل کردی، می‌تونی جدول قدیمی و موقت رو DROP کنی. تمیزکاری! 😎


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏پشتیبانی SQLite از داده‌های جغرافیایی

نکته 1:
‏SQLite به صورت خودی‌خودی و بومی از توابع یا نوع داده‌ی خاصی برای داده‌های جغرافیایی (مثل نقشه و مختصات) پشتیبانی نمی‌کنه. 🚫🗺️

نکته 2:
‏راه‌حل اصلی و طلایی برای SQLite، استفاده از یه افزونه (Extension) قوی و محبوب به اسم SpatiaLite هست. این افزونه قابلیت‌های GIS رو اضافه می‌کنه. 🦸‍♂️💡

نکته 3:
‏SpatiaLite بهت اجازه می‌ده که انواع اشکال جغرافیایی مثل نقطه (Point)، خط (LineString) و چندضلعی (Polygon) رو تو دیتابیس ذخیره کنی. 📍📏

نکته 4:
‏برای ذخیره‌سازی این داده‌های جغرافیایی، SpatiaLite از نوع داده‌ی BLOB استفاده می‌کنه تا داده‌های باینری مختصات رو به صورت فشرده نگه داره. 📦💾

نکته 5:
‏با SpatiaLite، می‌تونی از توابع جذاب فاصله‌سنجی مثل ST_Distance() استفاده کنی تا ببینی دو محل چقدر از هم دورن. خیلی کاربردیه! 🚀🔥

نکته 6:
‏این افزونه از یک نوع ایندکس فضایی (Spatial Index) به اسم R-Tree استفاده می‌کنه که برای جستجوی سریع موقعیت‌های جغرافیایی ضروریه. 🌳🔍

نکته 7:
‏تو می‌تونی با توابع رابطه‌ای (مثل STIntersects() یا STWithin()) چک کنی که آیا یه نقطه داخل یه محدوده قرار داره یا دو منطقه با هم تداخل دارن. 🧐

نکته 8:
‏نصب و فعال‌سازی SpatiaLite نیاز به مراحل اضافی در زمان کامپایل یا اجرا داره، اما اگه کارت با نقشه‌هاست، این قابلیت رو به یه دیتابیس جغرافیایی قوی تبدیل می‌کنه. 🛠️

نکته 9:
‏SQLite با SpatiaLite یه جایگزین سبک و قابل حمل برای دیتابیس‌های بزرگ جغرافیایی مثل PostGIS (برای PostgreSQL) به حساب میاد. 🎒

نکته 10:
‏برای انتقال داده‌ها، SpatiaLite بهت اجازه می‌ده اشکال جغرافیایی رو به فرمت‌های استاندارد مثل WKT (Well-Known Text) یا GeoJSON تبدیل کنی. 📝😎


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

نکته: Noise در سری‌های زمانی یعنی تغییرات تصادفی و غیرقابل پیش‌بینی داده‌ها.

🔹 ویژگی‌ها:

نویز باعث می‌شه مدل نتونه الگوهای واقعی رو درست یاد بگیره.

می‌تونه ناشی از خطاهای اندازه‌گیری، شرایط محیطی یا رویدادهای غیرمعمول باشه.

🔹 روش‌های مدیریت Noise:

روش Smoothing / Moving Average: صاف کردن داده‌ها برای کاهش نوسانات کوتاه‌مدت.

روش Filtering (مثل Kalman Filter): فیلتر کردن بخش تصادفی و حفظ روند و فصل.

مدل‌های مقاوم: بعضی مدل‌ها مثل LSTM یا Robust Regression می‌تونن تا حدی نویز رو تحمل کنن.

به زبان ساده: Noise مثل “سر و صدای مزاحم” در موسیقیه 🎶؛ باید گوش‌هات رو تنظیم کنی تا آهنگ اصلی رو درست بشنوی.

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


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

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

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

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

‏رفیق، وقتی چند تا جدول رو با JOIN به هم وصل می‌کنی، ممکنه کلی داده شلوغ پلوغ داشته باشی. GROUP BY میاد این داده‌ها رو مرتب می‌کنه و خلاصه‌شون رو بهت می‌ده! مثل اینکه کلی پرونده داری و می‌خوای خلاصه هر بخش رو بدونی. 📚

‏یادت نره که ترتیب مهمه! اول JOIN رو انجام بده که ردیف‌ها به هم بچسبن، بعدش GROUP BY رو بزن تا روی داده‌های ترکیب‌شده کار کنی و خلاصه‌سازی کنی. مثل اینکه اول مواد کیک رو مخلوط می‌کنی، بعد می‌ذاری بپزه! 🎂 ترتیب فراموش نشه!

‏برای اینکه GROUP BY معنی بده، حتماً از توابع تجمعی (Aggregate Functions) استفاده کن! مثلاً COUNT() برای شمردن، SUM() برای جمع کردن، AVG() برای میانگین. اینا قهرمان‌های خلاصه‌سازی هستن! 🏆🔢

‏یه نکته کلیدی: هر ستونی که توی SELECT آوردی ولی توی GROUP BY نیست، باید با یکی از توابع تجمعی (مثل SUM، COUNT) استفاده شده باشه. وگرنه MySQL گیج می‌شه چی رو نشون بده! 🧐💡

‏برای سرعت بیشتر، اگه می‌تونی فیلترهات رو با WHERE قبل از GROUP BY بزن! اینجوری قبل از اینکه داده‌ها گروه‌بندی بشن، تعدادشون کم میشه و سریع‌تر جواب می‌گیری. فیلتر کردن هوشمندانه! 🚀💨

‏HAVING رو با WHERE اشتباه نگیر! WHERE روی ردیف‌های اصلی قبل از GROUP BY فیلتر می‌کنه، ولی HAVING روی نتیجه‌ی GROUP BY و بعد از خلاصه‌سازی فیلتر می‌کشه. مثلاً بگو "فقط گروه‌هایی که جمعشون بالای ۱۰۰ بود رو نشون بده". خیلی کاربردیه! 🎯📊

‏یه اشتباه رایج اینه که بعضی ستون‌ها رو توی SELECT می‌ذاریم ولی یادمون میره توی GROUP BY بیاریمشون (اگه تجمعی نیستن). MySQL بهت ارور می‌ده یا نتیجه عجیب غریب! حواست به لیست ستون‌ها باشه! 👀⚠️

‏بیا یه مثال عملی: فرض کن می‌خوایم ببینیم هر مشتری چند تا سفارش داشته. جدول مشتریان رو با جدول سفارشات JOIN کن، بعد با GROUP BY customerid و COUNT(orderid) نتیجه رو بگیر. چقدر راحت! 🛒🧑‍💻

‏GROUP BY بعد از JOIN مثل این می‌مونه که اطلاعات جزئی رو جمع و جور کنی و یه دید کلی به دست بیاری. به جای اینکه هزاران ردیف رو نگاه کنی، چند تا ردیف خلاصه و مفید می‌بینی. دید بهتر، تصمیم بهتر! 📈👁

‏برای اینکه کوئری‌هات مثل جت پرواز کنن، مطمئن شو روی ستون‌هایی که برای JOIN و GROUP BY استفاده می‌کنی، ایندکس (Index) داری. ایندکس‌ها مثل فهرست کتاب، پیدا کردن اطلاعات رو خیلی سریع می‌کنن. ⚡️📚


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

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

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

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