ویرگول
ورودثبت نام
zahra behzadi
zahra behzadi
خواندن ۷ دقیقه·۷ ماه پیش

مبحث join در sql

تسلط بر Join در SQL: تقویت مهارت جست و جو در پایگاه داده

راهنمای جامع برای درک و بهینه سازی انواع join ها در SQL برای بهبود عملکرد و دقت

مقدمه

یک ابزار قوی برای مدیریت و آنالیز دیتا در دیتابیسهای رابطه ای SQL است

یک مفهوم اساسی در SQL عمل join است

که به شما امکان می دهد داده ها را از دو یا چند جدول بر اساس یک ستون مرتبط ترکیب کنید.

تسلط بر Join برای بازیابی کارآمد و دقیق داده ها ضروری است

در این مقاله، انواع مختلف Join را مورد بحث قرار می‌دهیم و مثال‌هایی ارائه می‌کنیم تا به شما در درک و استفاده مؤثر از آنها کمک کنیم.


کتاب راهنما SQL

کتاب راهنما SQL، یک منبع استثنایی و بسیار آموزنده برای کاربران SQL در تمام سطوح است.

این راهنمای جامع مجموعه گسترده ای از راه حل ها و تکنیک های کوئری نویسی را ارائه می دهد که به خوانندگان اجازه می دهد تا درک عمیق تری از مفاهیم SQL به دست آورند و در عین حال مهارت های عملی خود را افزایش دهند.

توضیحات واضح و مختصر کتاب، همراه با مثال‌های واقعی، آن را به یک دارایی ارزشمند برای هر کسی تبدیل می‌کند که به دنبال تسلط بر پیچیدگی‌های SQL و بهینه‌سازی کوئری های پایگاه داده خود است.


انواع Join در SQL

چندین نوع Join در SQL وجود دارد که هر کدام هدف منحصر به فردی را انجام می دهند. در اینجا، ما شش نوع Join رایج را پوشش خواهیم داد:

1.inner join

این نوع Join ردیف‌هایی را از هر دو جدول برمی‌گرداند که با شرایط مشخص شده، مطابقت دارد. اگر مطابقت پیدا نشد، هیچ ردیفی برگردانده نخواهد شد.

2. Left Join (or Left Outer Join)

این نوع Join همه سطرهای جدول سمت چپ و سطرهای منطبق با ان را از جدول سمت راست برمی گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون های جدول سمت راست بازگردانده می شود.

3. Right Join (or Right Outer Join)

مورد سوم ، right join مانند left join عمل می کند، اما تمام سطرها را از جدول سمت راست و ردیف های منطبق با ان را از جدول سمت چپ برمی گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون های جدول سمت چپ برگردانده می شود.

4. Full Join (or Full Outer Join)

مورد چهارم ، full join نتایج left join و right join را ترکیب می‌کند و تمام ردیف‌های هر دو جدول را برمی‌گرداند. اگر مطابقت پیدا نشد، مقادیر NULL برای ستون‌های جدول بدون تطابق برگردانده می‌شود.

5. Self Join

مورد پنجم ، self join یک نوع منحصر به فرد از join است که در آن یک جدول با خودش متصل می شود. این زمانی مفید است که شما نیاز به مقایسه سطرها در یک جدول دارید.

6. Cross Join

مورد اخر ، cross join به عنوان Cartesian join ( Join دکارتی) نیز شناخته می شود که حاصل ضرب دکارتی دو جدول را برمی گرداند، به این معنی که هر ردیف از جدول اول با هر ردیف از جدول دوم ترکیب می شود.


مثالهایی برای هر جوین:

برای درک هر نوع join بیایید ابتدا syntax ان را بررسی کنیم و سپس یک مثال از آن را تحلیل کنیم:

1.inner join syntax:

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name = table2.column_name;

مثال:

SELECT employees.employee_id, employees.name, departments.department_name

FROM employees

INNER JOIN departments

ON employees.department_id = departments.department_id

این کوئری نام کارمندان و نام بخش مربوط به آنها را با تطبیق department_id در هر دو جدول employees و departments بازیابی می کند. به عبارتی اشتراک این دو جدول را بر حسب department_id می دهد


2.Left Join Syntax:

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name = table2.column_name

مثال :

SELECT orders.order_id, customers.customer_name

FROM orders

LEFT JOIN customers

ON orders.customer_id = customers.customer_id

این کوئری همه order_id و نام‌های مشتری مربوطه آنها را بازیابی می‌کند، از جمله سفارش‌هایی که هیچ مشتری مرتبطی ندارند. خروجی ، تمام مقادیر جدول سمت چپ را برمی گرداند و تنها مقادیر مشترک هر دو جدول است که پر میشود و بقیه NULL خواهد شد.

3. Right Join Syntax:

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name = table2.column_name

مثال:

SELECT orders.order_id, customers.customer_name

FROM orders

RIGHT JOIN customers

ON orders.customer_id = customers.customer_id


این کوئری همه نام‌های مشتریان و order_id مربوط به آنها را بازیابی می‌کند، از جمله مشتریانی که هیچ سفارش مرتبطی ندارند . خروجی آن شبیه به left join است با این تفاوت که تمام مقادیر جدول سمت راست را برمی گرداند و مشترک های دو جدول پر میشود و بقیه NULL خواهد شد.

4. Full Join Syntax:

SELECT column_name(s)

FROM table1

FULL JOIN table2

ON table1.column_name = table2.column_name

مثال:

SELECT orders.order_id, customers.customer_name

FROM orders

FULL JOIN customers

ON orders.customer_id = customers.customer_id

این کوئری همه order_id و نام‌های مشتری را بازیابی می‌کند، از جمله سفارش‌هایی که هیچ مشتری مرتبطی ندارند و مشتریان بدون سفارش مرتبط.

5. Self Join Syntax:

SELECT column_name(s)

FROM table1 AS alias1

JOIN table1 AS alias2

ON alias1.column_name = alias2.column_name

مثال:

SELECT e1.name AS employee, e2.name AS manager

FROM employees AS e1

INNER JOIN employees AS e2

ON e1.manager_id = e2.employee_id

این کوئری نام کارمندان و نام مدیر مربوطه آنها را از join جدول کارکنان با خودش بازیابی می کند


6. Cross Join Syntax:

SELECT column_name(s)

FROM table1

CROSS JOIN table2

مثال:

SELECT products.product_name, categories.category_name

FROM products

CROSS JOIN categories

این کوئری همه ترکیبات ممکن از product_name و category_name را بازیابی می کند.


تکنیک های بهینه سازی join

برای اطمینان از اجرای کارآمد کوئری های SQL، تکنیک های بهینه سازی زیر را در نظر بگیرید:

1. از index ها روی ستون های مورد استفاده در join استفاده کنید

2. نوع join مناسب را برای به حداقل رساندن تعداد ردیف های خروجی join انتخاب کنید.

3. با استفاده از عبارت WHERE، داده ها را فیلتر کنید

4. در صورت امکان از عبارت های exists و in به جای subqueries استفاده کنید.

تله‌های رایج و نحوه اجتناب از آنها

هنگام کار با جوین به نکات زیر دقت کن :

1.در cross join بند on را نداریم.

2.در انتخاب صحیح جوین برای رسیدن به جواب درست باید دقت کرد

3. استفاده بیش از حد از subqueries میتواند بر عملکرد تاثیر بگذارد

برای جلوگیری از این مشکلات syntax join خود را مرور کن تا از join مناسب استفاده کرده باشی و کوئری های خود را برای عملکرد بهتر بهینه سازی کن


نتیجه گیری

تسلط بر join ها در SQL برای بازیابی و تجزیه و تحلیل موثر داده ها بسیار مهم است

با درک انواع مختلف join و موارد استفاده از آنها، می توانید کوئری های کارآمد و دقیقی ایجاد کنید که بینش های مورد نیاز را ارائه می دهد. تمرین و آزمایش کلید تسلط بر این مهارت ضروری SQL است.


سوالات متداول

1.تفاوت inner join و outer join چیست؟

یک inner join ردیف‌هایی را برمی‌گرداند که دارای مقادیر مشترک در هر دو جدول هستند، در حالی که outer join (left , right و full) ردیف‌های بی‌همتا را از یک یا هر دو جدول، با مقادیر NULL برای ستون‌هایی که مطابقت ندارند، برمی‌گرداند.


2.ایا یک کوئری میتواند شامل بیش از یک join باشد؟

بله، می‌توانید چندین جدول را در یک کوئری با زنجیره‌ کردن join ها به یکدیگر پیوند دهید. اما مطمئن شوید که از نوع و شرط join صحیح برای بازیابی داده های مورد نظر استفاده می کنید.


3.استفاده از انواع مختلف جوین چه پیامدی دارد؟

عملکرد می تواند بر اساس نوع join ، اندازه جدول و index متفاوت باشد. inner join سریعتر از outer join هستند، زیرا فقط ردیف های مشترک را برمی گرداند. استفاده از index های مناسب و بهینه سازی join عملکرد کوئری به میزان قابل توجهی بهبود می یابد.


4. چه موقع باید از self join استفاده کرد؟

هنگامی که نیاز به مقایسه یا ترکیب سطرها در یک جدول دارید، مانند بازیابی روابط سلسله مراتبی یا یافتن رکوردهای تکراری، از self join استفاده کنید.


5.چگونه هنگام استفاده از join ها از ردیف های تکراری جلوگیری می کنید؟

برای جلوگیری از تکرار ردیف‌ها، مطمئن شوید که جداول را در ستون‌های کلیدی منحصربفرد می‌پیوندید

یا از کلمه کلیدی DISTINCT برای برگرداندن تنها ردیف‌های منحصربه‌فرد استفاده می‌کنید.

همچنین، هنگام استفاده از cross join مراقب باشید، زیرا می تواند تعداد زیادی ردیف تکراری ایجاد کند.


ممنون برای زمانی که جهت مطالعه این مقاله گذاشتید.

منبع

https://medium.com/gitconnected/mastering-sql-joins-boost-your-database-query-skills-69649618769d

joinsql serversqlpower bidata analyst
مقالاتی که منتشر میکنم برای افرادی که در مسیر شغلی BI هستند ، کاربردی تر خواهد بود . امیدوارم براتون مفید باشه
شاید از این پست‌ها خوشتان بیاید