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

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

🟣 موضوع : ‏Replication و انواع آن

نکته :

‏اگه یه وقت "Master" خراب شد، "Slave"ـها آماده‌ان که جاشو بگیرن! 💪 این یعنی Downtime کم‌تر!


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: Apriori - سیستم‌های توصیه‌گر (Recommendation Systems)

نکته :

‏سیستم‌های توصیه‌گر مثل همون دوست خوبتن که می‌دونن چی دوست داری و بهت پیشنهاد میدن. دیگه لازم نیست ساعت‌ها تو اینترنت بگردی! 🤩


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

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

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

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

🟣 موضوع : ‏Deadlock و روش‌های جلوگیری

نکته :

‏تراکنش‌هات رو تا حد امکان کوتاه و سریع نگه دار! ⚡️ هر چی زودتر کارتو تموم کنی، فرصت ددلاک کمتره.


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

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

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

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

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

‏FULL OUTER JOIN چیه؟ 🤔 فرض کن دو تا جدول داری، این JOIN هرچیزی که تو جفتشونه رو بهت نشون می‌ده، حتی اگه تو اون یکی طرفش مطابقت نداشته باشه!

‏یه جورایی خاصه چون هم داده‌های LEFT JOIN رو می‌گیری هم RIGHT JOIN. یعنی هیچی از قلم نمی‌افته! 🚀 همه‌ی رکوردها از هر دو جدول رو می‌بینی.

‏نکته مهم! 💡 MySQL مستقیماً 'FULL OUTER JOIN' نداره. باید از ترکیب 'LEFT JOIN' و 'RIGHT JOIN' با 'UNION' استفاده کنی. یه کم پیچیده‌تره ولی شدنیه! 💪

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

‏بعدش یه 'RIGHT JOIN' بزن که همه ردیف‌های جدول سمت راست رو با مطابقت‌هاش از چپ بیاره. باز هم NULL برای نامطابق‌ها. 👉

‏حالا این دو تا کوئری رو با 'UNION' به هم وصل کن. حواست باشه 'UNION' خودش Duplicate ها رو حذف می‌کنه، پس 'UNION ALL' استفاده نکن مگر اینکه واقعاً بخوای تکراری‌ها هم باشند! 👨‍💻

‏کی به کارت میاد؟ وقتی می‌خوای ببینی چه رکوردهایی فقط تو جدول A هستن، چه رکوردهایی فقط تو جدول B هستن، و چه رکوردهایی تو هر دو! 📊 برای تحلیل کامل عالیه.

‏مثلاً داری لیست مشتری‌ها و سفارش‌ها رو بررسی می‌کنی. می‌خوای هم مشتری‌هایی که سفارش ندادن رو ببینی، هم سفارش‌هایی که شاید مشتری براشون تو دیتابیس نیست، و هم مشتری‌هایی که سفارش دادن. 🛒

‏ترکیب 'LEFT JOIN' و 'RIGHT JOIN' با 'UNION' می‌تونه سنگین باشه، مخصوصاً برای جداول بزرگ. 🐢 حواست به ایندکس‌ها باشه تا سرعتش نیاد پایین! 🏎️

‏همیشه قبلش فکر کن آیا واقعاً 'FULL OUTER JOIN' نیاز داری یا یه 'LEFT JOIN' یا 'RIGHT JOIN' ساده‌تر هم کارت رو راه می‌ندازه. گاهی اوقات راه حل ساده‌تر، بهتره! 🤔💡


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

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

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

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

🟣 موضوع : ‏مثال‌های معروف Column‑Family (Cassandra، HBase)

نکته :

‏در Cassandra، هر ردیف می‌تونه ستون‌های متفاوتی داشته باشه، این خیلی انعطاف‌پذیره 👍.


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

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

آدرس کانال اصلی :
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 به صورت عملی
📖 سرفصل : ‏خطرات و مشکلات کارایی در استفاده نادرست از CROSS JOIN

‏رفیق، یادت باشه CROSS JOIN بی‌حساب و کتاب بزنی، قشنگ کل دیتابیس‌ت منفجر میشه!🔥 حواست باشه شرط WHERE رو درست بذاری.

‏اگه performance برات مهمه، الکی CROSS JOIN نزن! 💡 اول ببین راه بهتری مثل JOIN معمولی داری یا نه. CROSS JOIN فقط وقتی لازمه که واقعاً همه حالت‌ها رو بخوای.

‏فکر کن CROSS JOIN مثل اینه که همه رو با همه جفت کنی! اگه جدول‌هات بزرگ باشن، نتیجه خیلی سنگین میشه. سنگین‌تر از چیزی که فکرشو می‌کنی!

‏وقتی CROSS JOIN میزنی، حتماً حواست به حجم دیتا باشه. ینی چی؟ ینی اول جدول کوچیکتر رو بذار که زودتر فیلتر بشه.

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

‏یه وقتایی CROSS JOIN رو میشه با یه زیرپرس و جو جایگزین کرد. امتحانش کن! شاید جواب بده و سرعتت بهتر بشه.

‏اگه مشکل performance داری، اول ببین ایندکس‌هات درسته یا نه. شاید مشکل از جای دیگه‌ست و الکی داری CROSS JOIN رو مقصر می‌دونی.

‏قبل از اینکه کدت رو deploy کنی، حتماً CROSS JOIN‌ت رو با یه دیتای تستی بزرگتر امتحان کن. اینجوری مطمئن میشی که تو production به مشکل نمی‌خوری.

‏از ابزارهای monitoring استفاده کن تا ببینی query‌هات چقدر resource مصرف می‌کنن. اینجوری می‌فهمی CROSS JOIN‌ت داره چه بلایی سر سرورت میاره.

‏اگه CROSS JOIN‌ت خیلی کنده، به جای یه query بزرگ، تیکه‌تیکه‌ش کن و نتیجه‌ها رو تو یه جدول temporary ذخیره کن. اینجوری شاید manageable‌تر بشه.


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

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

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

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

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

نکته 1:
‏تابع ST_Distance در افزونه SpatiaLite یک ابزار متریک فضایی است که برای محاسبه کوتاه‌ترین فاصله بین دو هندسه (Geometry) در یک فضای مختصات به کار می‌رود.

نکته 2:
‏نحو اصلی این تابع به صورت ST_Distance(geometry1, geometry2) است و نتیجه آن یک مقدار عددی اعشاری است که فاصله را در واحد سیستم مرجع مختصات (CRS) باز می‌گرداند.

نکته 3:
‏اگر دو هندسه ورودی در سیستم مرجع مختصات متفاوت (SRID) قرار داشته باشند، تابع ST_Distance برای جلوگیری از خطای محاسباتی، قبل از اجرا باید هندسه‌ها را به یک CRS مشترک تبدیل کند.

نکته 4:
‏نتیجه حاصل از ST_Distance برای هندسه‌های خطی یا ناحیه‌ای، حداقل فاصله اقلیدسی بین هر نقطه از هندسه اول و هر نقطه از هندسه دوم را نشان می‌دهد.

نکته 5:
‏در صورت نیاز به محاسبه فاصله ژئودزیکی (Geodesic Distance) بر روی سطح منحنی زمین، باید از تابع جایگزین STDistanceSphere یا STDistanceSpheroid استفاده شود.

نکته 6:
‏تابع ST_Distance در پرس‌وجوهای SQL معمولاً در بند ORDER BY برای مرتب‌سازی داده‌ها بر اساس نزدیکی مکانی به یک نقطه مرجع خاص به کار گرفته می‌شود.

نکته 7:
‏این تابع در ترکیب با بند WHERE برای اجرای پرس‌وجوهای شعاعی (Radius Queries) استفاده می‌شود تا تنها هندسه‌هایی که در فاصله مشخصی از یک نقطه معین قرار دارند، بازیابی شوند.

نکته 8:
‏استفاده از ST_Distance برای محاسبه فاصله نیازمند این است که هر دو آرگومان هندسی، مقادیر معتبر و غیرتهی (Non-NULL) از نوع BLOB فضایی باشند.

نکته 9:
‏اگر دو هندسه ورودی در یکدیگر تقاطع داشته باشند یا یکدیگر را لمس کنند، مقدار بازگشتی تابع ST_Distance به صورت قراردادی، صفر (0.0) خواهد بود.

نکته 10:
‏برای بهینه‌سازی عملکرد در پرس‌وجوهایی که از ST_Distance استفاده می‌کنند، توصیه می‌شود که اندیس فضایی R-tree بر روی ستون‌های هندسی درگیر در محاسبه ایجاد شده باشد.


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

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

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

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

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

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

‏یه وقتایی که LEFT JOIN می‌زنی و نتایجت پر از NULL میشه، شاید لازم باشه اول مطمئن بشی که شرط JOIN درست تعریف شده. 🤔💡

‏اگه می‌خوای ببینی چیا از جدول سمت چپ جا مونده، LEFT JOIN عالیه! هرچی تو جدول چپ هست رو بهت نشون میده، حتی اگه تو جدول راست چیزی براش نباشه.

‏برای پیدا کردن رکوردهایی که تو جدول دوم وجود ندارن، LEFT JOIN رو با WHERE table2.column IS NULL قاطی کن. جادو می‌کنه! 🧙‍♂️

‏یادت باشه، NULL یعنی "هیچی" یا "مقدار نامعلوم"، با صفر یا رشته خالی فرق داره. اینو همیشه تو ذهنت نگه دار. 🧠

‏موقعی که داری داده‌ها رو پاکسازی می‌کنی، LEFT JOIN می‌تونه بهت نشون بده کدوم ردیف‌ها کامل نیستن (مقدار NULL دارن). خیلی کاربردیه! 💪

‏یه وقتایی برای گزارش‌گیری، می‌خوای ببینی چه آیتم‌هایی سفارش داده نشدن. LEFT JOIN به دادت میرسه! 📊

‏اگه تو LEFT JOIN از تابع‌های تجمیعی (مثل COUNT، SUM) استفاده می‌کنی، حواست به NULL ها باشه، چون ممکنه نتیجه رو عوض کنن. ⚖️

‏با COALESCE یا IFNULL می‌تونی NULL های LEFT JOIN رو با یه مقدار پیش‌فرض (مثلاً 0 یا 'N/A') جایگزین کنی. اینجوری نتایجت خواناتر میشه. 📝

‏همیشه قبل از اینکه LEFT JOIN رو تو کد اصلیت استفاده کنی، یه بار روی داده‌های کوچیک تستش کن تا از درکش مطمئن بشی. موفق باشی! 🎉🚀


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

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

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

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

قبل از Clustering، کاهش بعد داده‌ها می‌تونه کیفیت خوشه‌بندی رو بهتر کنه.

🔹 وقتی داده‌ها خیلی زیاد باشن، خوشه‌بندی مستقیم سخت و نویزی می‌شه.
🔹 با روش‌هایی مثل PCA، t-SNE یا UMAP می‌تونی داده‌ها رو به ابعاد کمتر منتقل کنی و ساختار اصلی رو حفظ کنی.

مزایا:

الگوریتم خوشه‌بندی سریع‌تر اجرا می‌شه.

نویز و داده‌های کم‌اهمیت کاهش پیدا می‌کنن.

خوشه‌ها واضح‌تر و قابل تفسیرتر می‌شن.

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

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


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

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

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

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

نکته 1:
‏ایجاد جداول مکانی (Spatial Tables) در SQLite، پس از نصب و بارگذاری موفقیت‌آمیز افزونه SpatiaLite، توسط توابع تعریف شده در این پسوند صورت می‌پذیرد.

نکته 2:
‏برای تبدیل یک جدول معمولی به یک جدول مکانی، باید با استفاده از تابع AddGeometryColumn، یک ستون جدید با قابلیت ذخیره‌سازی داده‌های هندسی به آن اضافه گردد.

نکته 3:
‏ساختار تابع AddGeometryColumn شامل آرگومان‌هایی برای نام جدول، نام ستون هندسی، SRID (شناسه مرجع فضایی)، نوع هندسه و تعداد ابعاد است.

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

نکته 5:
‏نوع هندسه (Geometry Type) در هنگام تعریف ستون باید مشخص شود، مانند POINT، LINESTRING یا POLYGON، که نوع شکل فضایی مجاز برای ذخیره‌سازی را تعیین می‌کند.

نکته 6:
‏به لحاظ فنی، ستون هندسی در SQLite یک ستون از نوع BLOB (Binary Large Object) است که داده‌های هندسی را در قالب فشرده WKB (Well-Known Binary) نگهداری می‌کند.

نکته 7:
‏پس از افزودن ستون هندسی، تابع InitSpatialMetaData() باید اجرا شود تا جداول فراداده‌ای سیستمی (مانند geometry_columns) برای ردیابی شمای فضایی به‌روز شوند.

نکته 8:
‏در صورت نیاز به ذخیره‌سازی هندسه‌های مختلط در یک ستون، می‌توان از نوع هندسه عمومی GEOMETRY در تعریف ستون مکانی استفاده نمود.

نکته 9:
‏پس از تعریف ستون هندسی، معمولاً نیاز است که یک اندیس فضایی R-tree بر روی آن ستون ایجاد شود تا کارایی پرس‌وجوهای مکانی به صورت بهینه حفظ گردد.

نکته 10:
‏برای اطمینان از صحت تعریف، پس از ایجاد جدول، می‌توان با اجرای SELECT * FROM geometry_columns، اطلاعات ثبت شده ستون هندسی جدید را اعتبارسنجی نمود.


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز T-SQL - مبانی SELECT #پایگاه_داده #sql_server #t_sql

🟣 سوال: چگونه می‌توان با استفاده از اپراتور LIKE رکوردهایی را یافت که مقدارشان با یک حرف خاص شروع و با یک کاراکتر خاص پایان یابد؟

🟢 پاسخ: می‌توان از ترکیب LIKE و الگوهای % و _ استفاده کرد. مثال: SELECT * FROM Products WHERE Name LIKE 'A%z';
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

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

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

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

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

نکته 1:
‏PRAGMA چیه؟ 🤔 مثل یه دکمه تنظیمات و فرمان مخفی تو SQLite می‌مونه که بهت اجازه می‌ده تنظیمات داخلی دیتابیس رو بخونی یا تغییر بدی. ⚙️💡

نکته 2:
‏یکی از کاربردی‌ترین‌هاش PRAGMA foreign_keys = ON; هست. باید این رو اجرا کنی تا مطمئن شی محدودیت‌های کلید خارجی واقعاً اعمال می‌شن! 🔒

نکته 3:
‏می‌تونی از PRAGMA journal_mode; استفاده کنی تا ببینی دیتابیس تو از چه مکانیزمی برای مدیریت تراکنش‌ها استفاده می‌کنه (مثل DELETE یا WAL). 📝

نکته 4:
‏برای بهینه‌سازی سرعت خواندن و نوشتن همزمان، می‌تونی حالت WAL رو فعال کنی: PRAGMA journal_mode = WAL;. این یه راه‌حل پیشرفته و عالیه! 🚀🔥

نکته 5:
‏برای دیدن ساختار و ستون‌های یه جدول، می‌تونی از PRAGMA tableinfo(tablename); استفاده کنی. یه جورایی سونوگرافی جدول! 🩺

نکته 6:
‏اگه با مشکل قفل شدن (Locking) مواجه می‌شی، می‌تونی با PRAGMA busy_timeout = 5000; به SQLite بگی که ۵ ثانیه برای باز شدن قفل صبر کنه و بعد خطا بده.

نکته 7:
‏با PRAGMA cache_size = -20000; می‌تونی به SQLite بگی که چقدر از حافظه RAM رو برای بافر کش استفاده کنه. حافظه بیشتر = سرعت بیشتر! 🧠

نکته 8:
‏برای اطمینان از اینکه داده‌هات بلافاصله روی دیسک ذخیره می‌شن (Durability)، می‌تونی PRAGMA synchronous = FULL; رو بذاری. این یه کم کندتره ولی امن‌تره. 🛡️

نکته 9:
‏اگه می‌خوای فضای استفاده‌نشده‌ی دیتابیس رو کم کنی، می‌تونی با PRAGMA auto_vacuum = FULL; قابلیت تمیزکاری خودکار رو فعال کنی. البته کمی سربار داره. 🧹

نکته 10:
‏دستورات PRAGMA یه جورایی فراتر از SQL استاندارد هستن و برای کنترل چیزهایی استفاده می‌شن که خاص موتور SQLite هستن. یه ابزار فنی و ضروری! 🛠️😎


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

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

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

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

🟣 موضوع : ‏Rate Limiting و Throttling

نکته :

‏"برای Throttling، میتونی از Bucket Algorithm استفاده کنی. هر درخواست یه توکن از Bucket کم میکنه. وقتی Bucket خالی شد، درخواست رد میشه! 🪣"


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

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

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

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

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

نکته 1:
‏عملیات JOIN در SQL، از جمله SQLite، یک مکانیسم بنیادی برای ترکیب سطرهای دو یا چند جدول بر اساس ستون‌های مشترک و شرایط مرتبط است.

نکته 2:
‏INNER JOIN (اتصال درونی) متداول‌ترین نوع اتصال است و تنها سطرهایی را از جداول مبدأ بازیابی می‌کند که دارای مقادیر یکسان و منطبق در ستون‌های اتصال (JOIN Condition) باشند.

نکته 3:
‏LEFT JOIN (اتصال چپ) تمامی سطرهای جدول سمت چپ (جدول اول) را به همراه سطرهای منطبق از جدول سمت راست برمی‌گرداند؛ در صورت عدم تطابق، مقادیر جدول راست با NULL پر می‌شوند.

نکته 4:
‏RIGHT JOIN (اتصال راست) در SQLite به صورت صریح پشتیبانی نمی‌شود، اما می‌توان با جابجایی ترتیب جداول در دستور و استفاده از LEFT JOIN، به نتیجه‌ای معادل دست یافت.

نکته 5:
‏CROSS JOIN (اتصال ضربدری) بدون هیچ شرطی، ضرب دکارتی (Cartesian Product) دو جدول را تولید می‌کند، به این معنی که هر سطر از جدول اول با هر سطر از جدول دوم ترکیب می‌شود.

نکته 6:
‏شرط اتصال (JOIN Condition) معمولاً در بند ON مشخص می‌شود و شامل یک یا چند عبارت منطقی است که نحوه تطبیق سطرها را تعیین می‌کند.

نکته 7:
‏بهره‌وری (Efficiency) عملیات JOIN به شدت به وجود اندیس‌ها (Indexes) بر روی ستون‌های کلیدی که در شرط اتصال استفاده می‌شوند، وابسته است.

نکته 8:
‏برای جلوگیری از ابهام در نام ستون‌ها، به خصوص هنگامی که ستون‌هایی با نام یکسان در جداول متصل شده وجود دارند، استفاده از نام‌های مستعار جدول (Table Aliases) توصیه می‌شود.

نکته 9:
‏FULL OUTER JOIN (اتصال بیرونی کامل) سطرهای منطبق و نامنطبق هر دو طرف را برمی‌گرداند و در SQLite به صورت مستقیم با یک عملگر پشتیبانی نمی‌شود، اما با ترکیب UNION و LEFT JOIN قابل شبیه‌سازی است.

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


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

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

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

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

🟣 موضوع : ‏Upsert (MERGE) در SQL

نکته :

‏توی MERGE، شرط WHEN MATCHED آپدیت رو انجام میده، WHEN NOT MATCHED اینسرت! اینو یادت باشه! 🔥


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

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

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

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

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

نکته 1:
‏COMMIT چیه؟ 🤔 مثل زدن دکمه "ذخیره نهایی" تو یه نرم‌افزاره! می‌گه: "تمام کارهایی که از BEGIN تا الان انجام دادم، دائمی و رسمی بشن." 💾

نکته 2:
‏وقتی COMMIT می‌کنی، تغییراتت دائمی می‌شن و دیگه نمی‌تونی با ROLLBACK به عقب برگردی. پس مطمئن باش که همه چیز درسته! 🛑

نکته 3:
‏بعد از COMMIT، تراکنش بسته می‌شه و دیتابیس برمی‌گرده به حالت Autocommit (اگه دوباره BEGIN نکنی). آماده برای تراکنش بعدی! 💡

نکته 4:
‏یکی از هدف‌های مهم COMMIT، اطمینان از ماندگاری (Durability) اطلاعاته. یعنی داده‌ها دیگه توی حافظه موقت نیستن و روی دیسک ثبت شدن. 🔥

نکته 5:
‏اگه چندتا دستور UPDATE پشت سر هم اجرا کردی و بعد COMMIT زدی، مطمئن می‌شی که یا همه آپدیت‌ها انجام می‌شن یا هیچ‌کدوم. (قانون اتمیسیته) ⚛️

نکته 6:
‏وقتی COMMIT می‌کنی، قفل‌هایی که روی جدول‌ها داشتی آزاد می‌شن و بقیه فرآیندها هم می‌تونن شروع به کار کنن. همکاری مسالمت‌آمیز! 🤝

نکته 7:
‏تأخیر در زدن COMMIT (یعنی باز نگه داشتن طولانی تراکنش) ممکنه باعث بشه بقیه برنامه‌ها مجبور به صبر کردن بشن. سعی کن تراکنش‌ها رو سریع ببندی.

نکته 8:
‏دستور COMMIT یه نقطه امن (Checkpoint) برای دیتابیس ایجاد می‌کنه و فایل‌های موقتی (مثل ژورنال) رو پاک می‌کنه. نظم و تمیزی!

نکته 9:
‏اگه BEGIN IMMEDIATE یا BEGIN EXCLUSIVE استفاده کرده باشی و دیتابیس رو قفل کرده باشی، COMMIT تنها راه برای باز کردن قفل و اجازه دادن به بقیه برای نوشتن هست. 🔑

نکته 10:
‏یه نکته فنی: COMMIT باعث می‌شه SQLite یه نوشتن فیزیکی روی دیسک انجام بده. اینجوری مطمئن می‌شی که داده‌ها واقعاً ذخیره شدن. ✍️😎


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

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

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

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

🟣 موضوع : ‏NoSQL در مقابل SQL

نکته :

‏NoSQL مثل یه جعبه ابزار بزرگ می‌مونه، هر شکلی داده داری، یه ابزار براش هست 🛠️.


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: مفاهیم اصلی - چالش‌ها - پیچیدگی محاسباتی در شبکه‌های عمیق

نکته :

‏مستندات کتابخونه‌ها رو بخون. خیلی چیزای باحال و کاربردی توشون پیدا می‌شه. 📚


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

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

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

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

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

نکته 1:
‏SQLite تا حد زیادی از استاندارد SQL-92 تبعیت می‌کند، اما تمامی قابلیت‌های آن را به‌طور کامل پیاده‌سازی نمی‌نماید.

نکته 2:
‏SQLite از نوع‌دهی پویا استفاده می‌کند که با مدل نوع‌دهی سخت‌گیرانه در استاندارد SQL تفاوت اساسی دارد.

نکته 3:
‏موتور SQLite از بسیاری از دستورات پرکاربرد SQL پشتیبانی می‌کند، اما برخی ویژگی‌های پیشرفته مانند CHECK گسترده یا نوع‌های داده پیچیده ممکن است محدود باشند.

نکته 4:
‏SQLite در پیاده‌سازی قیود تمامیت نسبتاً سازگار است، اما رفتار آن در برخی موارد مانند FOREIGN KEY نیازمند فعال‌سازی صریح است و در همه نسخه‌ها یکسان نیست.

نکته 5:
‏در SQLite، پشتیبانی از تراکنش‌ها مطابق استاندارد ACID است، اما برخی حالت‌های انحصار قفل‌گذاری متفاوت از سازوکارهای استاندارد SQL عمل می‌کنند.

نکته 6:
‏روند بهینه‌سازی کوئری در SQLite سبک‌تر از موتورهای سنگین‌تر SQL است و تمام قابلیت‌های استاندارد بهینه‌سازی را ارائه نمی‌کند.

نکته 7:
‏برخی توابع تجمیعی و اسکالر استاندارد SQL در SQLite قابل استفاده‌اند، اما مجموعه آن‌ها نسبت به پایگاه‌های داده مبتنی بر استانداردهای گسترده‌تر محدودتر است.

نکته 8:
‏SQLite از FULL OUTER JOIN پشتیبانی نمی‌کند، که این موضوع یکی از موارد عدم انطباق با استانداردهای جامع SQL محسوب می‌شود.

نکته 9:
‏روند مدیریت اسکیما در SQLite با رویکرد استاندارد SQL تفاوت دارد، زیرا تغییر برخی ساختارها مانند ALTER TABLE محدودتر و نیازمند عملیات جایگزین است.

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


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

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

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

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

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

‏نکته 1: حواست باشه! وقتی با JOIN داده‌ها رو به هم وصل می‌کنی و بعد COUNT می‌گیری، ممکنه تعداد ردیف‌هات الکی زیاد بشن. 🤔 برای شمردن آیتم‌های یکتا، حتماً از COUNT(DISTINCT ...) استفاده کن! 💡

‏نکته 2: اگه می‌خوای فقط آیتم‌های منحصر به فرد یه جدول رو بشمری ولی نیاز به اطلاعات جدول دیگه هم داری، COUNT(DISTINCT yourmaintable.id) رفیقته! اینجوری از شمردن تکراری‌ها جلوگیری می‌کنی.

‏نکته 3: عملکرد (Performance) رو دست کم نگیر! 🚀 JOIN و COUNT روی جدول‌های بزرگ می‌تونه سرعت رو بیاره پایین. حتماً مطمئن شو که ایندکس‌هات (Indexes) درست و حسابی تنظیم شدن!

‏نکته 4: فرق LEFT JOIN و INNER JOIN برای شمردن خیلی مهمه! اگه می‌خوای حتی اونایی که تو جدول دوم هیچ تطابقی ندارن هم تو شمردنت باشن، LEFT JOIN رو انتخاب کن. 🤝

‏نکته 5: گاهی اوقات، استفاده از یک ساب‌کوئری (Subquery) یا CTE برای شمردن پیش‌فرض، می‌تونه کوئری رو واضح‌تر و حتی سریع‌تر کنه. 🧠 پیچیده کردن JOIN و COUNT همیشه بهترین راه نیست!

‏نکته 6: برای شمردن گروه‌بندی شده (مثلاً تعداد سفارش برای هر مشتری)، GROUP BY رو فراموش نکن! 🏷️ این دستور کلید اصلی برای گرفتن آمار از دسته‌های مختلفه.

‏نکته 7: COUNT() و COUNT(columnname) فرق دارن. COUNT() همه ردیف‌ها رو میشماره، حتی اونایی که توشون NULL هستن (بعد از JOIN و WHERE). ولی COUNT(columnname) فقط ردیف‌های غیر-NULL رو میشماره. حواست باشه کدوم رو استفاده می‌کنی! 🧐

‏نکته 8: یه مثال کاربردی: برای شمردن تعداد سفارش‌های هر مشتری، می‌تونی اینطوری بنویسی: SELECT c.name, COUNT(o.orderid) FROM customers c LEFT JOIN orders o ON c.id = o.customerid GROUP BY c.id; خیلی مفیده! 🛒

‏نکته 9: الکی JOIN نکن! 🙅‍♀️ اگه فقط نیاز به یه شمارش ساده از یه جدول داری و اطلاعات جدول دیگه برات مهم نیست، بی‌جهت جدول‌ها رو به هم وصل نکن. کوئری‌هات رو سبک و کارآمد نگه دار! 🔥

‏نکته 10: همیشه اول با داده‌های کم و نمونه (Small Data) تست کن! 🧪 اینجوری می‌فهمی که JOIN و COUNT چطوری رفتار می‌کنن قبل از اینکه روی داده‌های اصلی (Production) اجراش کنی. امنیت و دقت حرف اوله!


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

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

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

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