Forwarded from CodeCrafters (مجتبی)
یکی از مهم ترین بخش های زبان کوئری نویسی SQL قسمت WHERE JOIN هست از هر دو میتوان برای کوئری زدن روی دو و یا چند جدول استفاده کرد اما تفاوت هایی با هم خواهند داشت با ذکر یک مثال این مورد را بیشتر توضیح میدهیم.
دو جدول فرضی را در نظر بگیرید
۱. جدول User با مقادیر Id, user_name , phone_number
۲.جدول Book با مقادیر Id, name, price, phone_number
(در واقعیت جدول Book به جدول User با کلید خارجی متصل میشود ولی در این مثال از این مورد چشم پوشی شده است )
اگر بخواهیم با استفاده از WHERE اطلاعات این دو جدول را بر اساس شرط phone_number با هم ترکیب کنیم، میتوانیم از کوئری زیر استفاده کنیم:
SELECT *
FROM User, Book
WHERE User.phone_number = Book.phone_number;
این کوئری تمام رکوردهایی را انتخاب میکند که مقدار phone_number آنها در هر دو جدول یکسان است.
همچنین، میتوانیم با استفاده از JOIN اطلاعات این دو جدول را بر اساس شرط phone_number با هم ترکیب کنیم. این مثال را با استفاده از JOIN به صورت زیر توسعه میدهیم:
SELECT *
FROM User
JOIN Book ON User.phone_number = Book.phone_number;
این کوئری نیز تمام رکوردهایی را انتخاب میکند که مقدار phone_number آنها در هر دو جدول یکسان است. با استفاده از JOIN، ما رکوردهای مشابه را از دو جدول به هم متصل میکنیم تا نتایج را بدست آوریم.
تفاوت اصلی در استفاده از WHERE و JOIN در این مثال، در نحوه نوشتن کوئری است. استفاده از JOIN به صورت مستقیم تر و خواناتر است و به طور ضمنی بهینهترین روش اتصال دو جدول را انتخاب میکند. همچنین، استفاده از JOIN معمولاً در کوئریهای پیچیدهتر و وابستگیهای بیشتر بین جداول مفیدتر است، زیرا به شما امکان اتصال جدولها بر اساس شرایط مشترک را میدهد و نتایج را به صورت یکپارچهتر و منظمتر برگرداند.
#SQL
@code_crafters
دو جدول فرضی را در نظر بگیرید
۱. جدول User با مقادیر Id, user_name , phone_number
۲.جدول Book با مقادیر Id, name, price, phone_number
(در واقعیت جدول Book به جدول User با کلید خارجی متصل میشود ولی در این مثال از این مورد چشم پوشی شده است )
اگر بخواهیم با استفاده از WHERE اطلاعات این دو جدول را بر اساس شرط phone_number با هم ترکیب کنیم، میتوانیم از کوئری زیر استفاده کنیم:
SELECT *
FROM User, Book
WHERE User.phone_number = Book.phone_number;
این کوئری تمام رکوردهایی را انتخاب میکند که مقدار phone_number آنها در هر دو جدول یکسان است.
همچنین، میتوانیم با استفاده از JOIN اطلاعات این دو جدول را بر اساس شرط phone_number با هم ترکیب کنیم. این مثال را با استفاده از JOIN به صورت زیر توسعه میدهیم:
SELECT *
FROM User
JOIN Book ON User.phone_number = Book.phone_number;
این کوئری نیز تمام رکوردهایی را انتخاب میکند که مقدار phone_number آنها در هر دو جدول یکسان است. با استفاده از JOIN، ما رکوردهای مشابه را از دو جدول به هم متصل میکنیم تا نتایج را بدست آوریم.
تفاوت اصلی در استفاده از WHERE و JOIN در این مثال، در نحوه نوشتن کوئری است. استفاده از JOIN به صورت مستقیم تر و خواناتر است و به طور ضمنی بهینهترین روش اتصال دو جدول را انتخاب میکند. همچنین، استفاده از JOIN معمولاً در کوئریهای پیچیدهتر و وابستگیهای بیشتر بین جداول مفیدتر است، زیرا به شما امکان اتصال جدولها بر اساس شرایط مشترک را میدهد و نتایج را به صورت یکپارچهتر و منظمتر برگرداند.
#SQL
@code_crafters
❤5👍1
Forwarded from CodeCrafters (Mojtaba)
دستور GROUP BY در SQL
دستور GROUP BY در SQL برای گروهبندی رکوردها بر اساس مقادیر یک یا چند ستون استفاده میشود. با استفاده از این دستور میتوانید رکوردها را بر اساس مقادیر مشترک در ستونهای مورد نظر گروهبندی کرده و نتایج را بر اساس گروهها تجمیع کنید.
ساختار دستور GROUP BY به صورت زیر است:
به عنوان مثال، فرض کنید یک جدول به نام "employees" داریم که شامل ستونهای "name"، "department" و "salary" است. میخواهیم مجموع حقوق هر بخش را محاسبه کنیم. برای این کار از دستور GROUP BY استفاده میکنیم. دستور زیر نتیجه مورد نظر را به ما میدهد:
مثال دیگر، میتوانیم تعداد کارمندان هر بخش را محاسبه کنیم:
@Code_Crafters
دستور GROUP BY در SQL برای گروهبندی رکوردها بر اساس مقادیر یک یا چند ستون استفاده میشود. با استفاده از این دستور میتوانید رکوردها را بر اساس مقادیر مشترک در ستونهای مورد نظر گروهبندی کرده و نتایج را بر اساس گروهها تجمیع کنید.
ساختار دستور GROUP BY به صورت زیر است:
SELECT column1, column2, ..., aggregate_function(column)در این دستور، شما ابتدا ستونهایی که میخواهید نتایج را بر اساس آنها گروهبندی کنید، را در قسمت GROUP BY مشخص میکنید. سپس با استفاده از توابع تجمیعی مانند SUM، COUNT، AVG، MIN و MAX، میتوانید مقادیر ستونهای دیگر را برای هر گروه محاسبه کنید.
FROM table
GROUP BY column1, column2, ...
به عنوان مثال، فرض کنید یک جدول به نام "employees" داریم که شامل ستونهای "name"، "department" و "salary" است. میخواهیم مجموع حقوق هر بخش را محاسبه کنیم. برای این کار از دستور GROUP BY استفاده میکنیم. دستور زیر نتیجه مورد نظر را به ما میدهد:
SELECT department, SUM(salary)نتیجه این دستور شامل دو ستون "department" و "SUM(salary)" است. ستون "department" حاوی نام بخشها است و ستون "SUM(salary)" حاوی مجموع حقوق برای هر بخش است.
FROM employees
GROUP BY department
مثال دیگر، میتوانیم تعداد کارمندان هر بخش را محاسبه کنیم:
SELECT department, COUNT(employee_id)همچنین، میتوانیم میانگین حقوق کارمندان هر بخش را محاسبه کنیم:
FROM employees
GROUP BY department
SELECT department, AVG(salary)#SQL
FROM employees
GROUP BY department
@Code_Crafters
👍8
Forwarded from Ninja Learn | نینجا لرن
💎 اصول Normalisation در طراحی دیتابیس 💎
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
#sql #database #db #nf
🔥10👍8