SQL که به عنوان زبان پرسوجوی ساختیافته شناخته میشود یک ابزار قدرتمند برای جستوجو در میان حجم وسیعی از دادهها و استخراج اطلاعات خاص برای تحلیل است. یادگیری SQL برای هر کسی که میخواهد بهعنوان تحلیلگر داده، مهندس داده یا دانشمند داده فعالیت کند بسیار مهم است و در بسیاری از زمینههای دیگر، مانند توسعه وب و بازاریابی، نیز کاربرد دارد. در این مطلب مهمترین سوالات مصاحبه SQL را بررسی کردهایم.
- 1. سوالات مصاحبه SQL در سطح مقدماتی
-
2.
سوالات مصاحبه SQL در سطح پیشرفته
- 2.1. EQUI JOIN چیست؟
- 2.2. تفاوت میان کلمه کلیدی ON و USING در JOIN چیست؟
- 2.3. NATURAL JOIN چیست؟
- 2.4. تفاوت میان JOIN و UNION چیست؟
- 2.5. نیمهجوین (semi-join) چیست؟
- 2.6. Anti-join چیست؟
- 2.7. تفاوت میان عبارت INTERSECT و INNER JOIN چیست؟
- 2.8. چه نکاتی برای بهینهسازی عملکرد هنگام استفاده از CROSS JOINS باید در نظر گرفته شود؟
- 2.9. منظور از JOIN شرطی چیست؟
- 2.10. تفاوت میان عبارات WHERE و ON در جوینهای SQL چیست؟
- 3. چند نکته و ترفند کلی
- 4. جمعبندی
- 5. پرسشهای متداول
- 6. یادگیری تحلیل داده را از امروز شروع کنید!
سوالات مصاحبه SQL در سطح مقدماتی
ابتدا از سطح مقدماتی شروع کنیم. سوالات مصاحبه SQL در سطح مقدماتی میتواند این نمونهها را در بر گیرد:
JOIN چیست؟
JOIN یک عبارت SQL است که برای ترکیب و بازیابی رکوردها از دو یا چند جدول استفاده میشود. جدولهای SQL میتوانند براساس رابطه میان ستونهای آن جدولها به هم متصل شوند. این رابطه معمولاً براساس کلیدهای خارجی (Foreign Keys) و اولیه (Primary Keys) ایجاد میشود. انواع مختلف JOIN شامل Inner Join ،Left Join ،Right Join و Full Join هستند که هر یک نحوه خاصی از ترکیب دادهها را فراهم میکنند؛ برای مثال، Inner Join فقط رکوردهایی را باز میگرداند که در هر دو جدول مطابق با شرط Join باشند، درحالیکه Left Join تمامی رکوردهای جدول سمت چپ و رکوردهای مطابقتیافته از جدول سمت راست را برمیگرداند.
استفاده از JOIN به تحلیلگران داده و برنامهنویسان این امکان را میدهد تا از دادههای چندین جدول بهصورت یکپارچه و مؤثر بهرهبرداری کنند.
انواع اصلی JOIN کداماند؟
۶ نوع اصلی JOIN وجود دارد:
- INNER JOIN رکوردهایی را بازمیگرداند که در هر دو جدول مدنظر مقادیر مطابقتیافته در ستونهای مشخص شده داشته باشند؛ بهعبارت دیگر، تنها رکوردهایی که در هر دو جدول شرط Join را برآورده میکنند در نتیجه نهایی قرار میگیرند.
- LEFT JOIN تمامی رکوردهای جدول سمت چپ (جدول اول) و رکوردهای مطابقتیافته از جدول سمت راست (جدول دوم) را بازمیگرداند. اگر رکوردی در جدول سمت چپ موجود باشد که در جدول سمت راست مطابقت نداشته باشد، مقدارهای ستونهای جدول سمت راست به صورت NULL نشان داده میشود.
- RIGHT JOIN تمامی رکوردهای جدول سمت راست (جدول دوم) و رکوردهای مطابقتیافته از جدول سمت چپ (جدول اول) را بازمیگرداند. اگر رکوردی در جدول سمت راست موجود باشد که در جدول سمت چپ مطابقت نداشته باشد، مقدارهای ستونهای جدول سمت چپ بهصورت NULL نشان داده میشود.
- FULL JOIN تمامی رکوردهای موجود در هر دو جدول را بازمیگرداند، خواه این رکوردها در جدول دیگر مطابقت داشته باشند یا نه. اگر رکوردی در یک جدول موجود باشد و در جدول دیگر مطابقت نداشته باشد، مقادیر ستونهای جدول دیگر بهصورت NULL نشان داده میشود.
- SELF JOIN یک جدول را با خودش ترکیب میکند. این نوع Join زمانی استفاده میشود که بخواهیم رکوردهای یک جدول را با رکوردهای دیگر همان جدول مقایسه کنیم. برای استفاده از SELF JOIN باید از نامهای مستعار (Alias) برای جدول استفاده کرد.
- CROSS JOIN حاصلضرب کارتزینی دو جدول را بازمیگرداند، یعنی هر رکورد از جدول اول با هر رکورد از جدول دوم ترکیب میشود. این نوع Join معمولاً برای موارد خاص استفاده میشود و میتواند به تولید تعداد زیادی رکورد بینجامد.
تفاوت میان LEFT JOIN و RIGHT JOIN چیست؟
LEFT JOIN تمامی رکوردها از سمت چپ و ردیفهای مطابق از جدول سمت راست را شامل میشود، درحالیکه RIGHT JOIN تمامی ردیفها از سمت راست و ردیفهای نامطابق از جدول سمت چپ را باز میگرداند. در اصل، هر دو join همان نتیجه را میدهند اگر ترتیب جداول را معکوس کنیم، بهشرطی که فقط دو جدول درگیر باشند.
چرا JOIN در مدیریت SQL مهم است؟
جوینها روشهای کلیدی برای ترکیب چندین جدول بهگونهای هستند که خواندن آنها آسان باشد. آنها راهی کارآمد و قابلدسترس برای دسترسی و ترکیب اطلاعات در پایگاه داده فراهم میکنند؛ همچنین استفاده از جوینها میتواند مصرف داده و فضای ذخیرهسازی در پایگاه داده را کاهش دهد.
Outer JOIN چیست؟
Outer JOIN جوینهایی هستند که مقدارهایی مطابق و نامطابق از هر دو جدول را باز میگردانند. LEFT JOIN ،RIGHT JOIN و FULL JOIN بهعنوان Outer JOIN در نظر گرفته میشوند.
هدف از استفاده از Alias در SQL Joins چیست؟
با پیچیدهترشدن کوئریها نامها میتوانند طولانی و ناپسند شوند. برای کمک به روشنترشدن موضوع میتوانیم از Alias (نام مستعار) برای اختصاص نامهای جدید به آیتمها در کوئری استفاده کنیم، ازجمله ستونها و جداول. برای دادن یک Alias به یک شیء میتوانیم از عبارت AS استفاده کنیم.
پیشنهاد میکنیم با سوالات مصاحبه تبلو هم آشنا شوید.
سوالات مصاحبه SQL در سطح پیشرفته
نمونه سوالات مصاحبه SQL در سطح پیشرفته از این قرار است:
EQUI JOIN چیست؟
EQUI JOIN نوعی عملیات JOIN در پایگاه داده است که ردیفها را از دو یا چند جدول براساس یک شرط همسانسازی با استفاده از عملگر تساوی (=) ترکیب میکند. این JOIN برای بازیابی دادههایی که مقدارهایی در ستونهای مشخص برابر هستند استفاده میشود.
EQUI JOIN همان نتایج INNER JOIN را با نحوی متفاوت بازمیگرداند، همانطور که در این مثال نشان داده شده است:
تفاوت میان کلمه کلیدی ON و USING در JOIN چیست؟
معمولاً از کلمه کلیدی ON برای تعیین ستونهای مشترک در دو جدول هنگام استفاده از JOIN استفاده میشود. اگر ستونهای مورداستفاده برای JOIN در هر دو جدول نام یکسانی داشته باشند، میتوانید بهجای ON از USING بهعنوان یک خلاصهنویسی استفاده کنید؛ برای مثال، اگر جداول COURSES و TECHNOLOGIES یک ستون مشترک بهنام technology_id داشته باشند، میتوانید از این کوئری استفاده کنید:
NATURAL JOIN چیست؟
NATURAL JOIN برای ایجاد JOIN براساس ستونهای مشترک در دو جدول استفاده میشود. ستونهای مشترک ستونهایی هستند که در هر دو جدول نام یکسانی دارند. با استفاده از مثال سؤال قبلی، میتوانیم همان کوئری را بهاین صورت بنویسیم:
تفاوت میان JOIN و UNION چیست؟
JOIN برای ترکیب دادهها بهصورت ستونهای جدید براساس ستونهای مشترک در دو یا چند جدول استفاده میشود؛ درمقابل، UNION برای ترکیب دادهها بهصورت ردیفهای جدید، براساس نتیجه دو یا چند عبارت SELECT استفاده میشود؛ بهعبارت دیگر، UNION برای اتصال دادهها بهصورت ردیفی استفاده میشود. برای جلوگیری از خطا، هر عبارت SELECT در UNION باید تعداد ستونهای یکسانی داشته باشد و ستونها باید انواع دادههای مشابه داشته باشند.
نیمهجوین (semi-join) چیست؟
کوئریهای نیمهجوین معمولاً بهصورت زیرکوئری اجرا میشوند که در آن ردیفها تنها از جدول اول (چپ) انتخاب میشوند، مشروط بر آنکه شرط (یا مجموعه شرایط) در جدول دوم تطبیق داده شود. برخلاف جوینهای معمول که ردیفهای تطبیقی را از هر دو جدول شامل میشوند، نیمهجوین فقط ستونهای جدول چپ را در نتیجه نهایی درج میکند.
Anti-join چیست؟
Anti-joins که بهنام anti-semi-joins نیز شناخته میشوند، برخلاف semi-joins عمل میکنند. در Anti Join ردیفهایی از جدول اول انتخاب میشوند که شرط (یا مجموعهای از شرایط) در جدول دوم را برآورده نمیکنند.
تفاوت میان عبارت INTERSECT و INNER JOIN چیست؟
INNER JOIN دادهها را از چند جدول ترکیب میکند و نتیجهای جامع ایجاد میکند که شامل آن ردیفها یا رکوردهایی است که در هر دو جدول شرط تعریفشده برای JOIN را برآورده میکنند؛ درمقابل، INTERSECT روی ردیفهای مشترک میان عبارات SELECT تمرکز میکند. INNER JOIN براساس یک ستون یا فیلد مشترک جداول را به هم متصل میکند، درحالیکه INTERSECT براساس ساختار عبارتهای SELECT کار میکند.
INNER JOIN اغلب یک مجموعه داده بزرگتر را که اطلاعات را از جداول مختلف ترکیب میکند بازمیگرداند، درحالیکه INTERSECT یک مجموعه داده کوچکتر را تولید میکند که فقط ردیفهای مشترک را شامل است.
چه نکاتی برای بهینهسازی عملکرد هنگام استفاده از CROSS JOINS باید در نظر گرفته شود؟
از آنجا که CROSS JOIN ترکیب جفتی هر ردیف از جدول اول با هر ردیف از جدول دوم را بازمیگرداند، این میتواند به ایجاد یک جدول بسیار بزرگ بینجامد، بهویژه اگر جدولهایی که به هم JOIN میشوند از قبل بزرگ باشند. برای بهینهسازی عملکرد هنگام استفاده از CROSS JOINS، این نکات را در نظر بگیرید:
- حجم دادهها را کاهش دهید: CROSS JOIN تمامی ترکیبهای ممکن از ردیفهای دو جدول را ایجاد میکند؛ بنابراین اگر حجم دادهها زیاد باشد، حجم خروجی بهصورت نمایی افزایش مییابد. برای کاهش حجم دادهها، میتوانید از فیلترهای WHERE استفاده کنید تا تعداد ردیفها در جدولها کاهش یابد.
- از استفاده غیرضروری از CROSS JOIN خودداری کنید: CROSS JOIN فقط زمانی استفاده شود که واقعاً به تمامی ترکیبات ممکن نیاز دارید؛ در غیر این صورت، استفاده از دیگر JOINها مانند INNER JOIN یا LEFT JOIN را مدنظر قرار دهید.
- ایندکسگذاری مناسب: اطمینان حاصل کنید که جدولهای شما بهخوبی ایندکسگذاری شدهاند. این کار میتواند زمان اجرای کوئری را بهبود بخشد و عملکرد را افزایش دهد.
- پارتیشنبندی جداول: اگر جدولهای شما بزرگ هستند، پارتیشنبندی میتواند کمک کند تا دادهها به بخشهای کوچکتری تقسیم شوند که بهبود کارایی کوئری را رقم میزند.
- استفاده از منابع محاسباتی بهینه: اطمینان حاصل کنید که سرور پایگاه داده شما منابع کافی (مانند CPU و RAM) برای انجامدادن عملیات CROSS JOIN داشته باشد. بهینهسازی پیکربندی سرور میتواند به بهبود عملکرد کمک کند.
- جدولهای موقت: در برخی موارد استفاده از جدولهای موقت میتواند به بهبود عملکرد کمک کند. میتوانید دادهها را به جدولهای موقت منتقل کنید، عملیات موردنیاز را انجام دهید و سپس نتایج را بازیابی کنید.
منظور از JOIN شرطی چیست؟
JOINهای شرطی تکنیکی قدرتمند برای ترکیب دادهها از چندین جدول براساس شرایط خاص هستند که به کاربران امکان ایجاد کوئریهای دینامیک و انعطافپذیر را میدهد. JOINهای شرطی به مدیران پایگاه داده کمک میکنند تا کوئریهای سفارشی را تعریف کنند که عبارات اضافی مانند توابع تجمیعی، عملگرهای مقایسهای و عملگرهای منطقی را داشته باشند.
تفاوت میان عبارات WHERE و ON در جوینهای SQL چیست؟
هدف از عبارت ON مشخصکردن شرایط JOIN است، بهعبارت دیگر، تعریف نحوه پیوستن جدولها. بهطور خاص، شما تعریف میکنید که رکوردها چگونه باید مطابقت داده شوند؛ درمقابل، عبارت WHERE برای مشخصکردن شرایط فیلترکردن استفاده میشود، یعنی تعریف اینکه کدام ردیفها باید در مجموعه نتایج نگه داشته شوند. یک JOIN که شامل یک شرط فیلترکردن باشد میتواند بهعنوان یک JOIN شرطی در نظر گرفته شود.
پیشنهاد میکنیم درباره سوالات مصاحبه Power BI هم مطالعه کنید.
چند نکته و ترفند کلی
برای کمک به شما در موفقیت در مسیر بهدستآوردن موقعیت شغلی و پاسخ به سوالات مصاحبه SQL بد نیست به این چند نکته و ترفند توجه کنید:
- هیچکس انتظار ندارد که شما همهچیز را بدانید: نداشتن یک مهارت خاص طبیعی است. اگر شرکت از شما راهحلی در R بخواهد، اما شما فقط بدانید چگونه آن را در پایتون انجام دهید، نشان دهید که چگونه میتوانید مسائل را با پایتون حل کنید و تمایل خود را برای یادگیری R نشان دهید.
- قبل از پاسخدادن فکر کنید: اگر سوال نیاز به زمان بیشتری دارد، از آنها زمان بیشتری بخواهید. این نشان میدهد که شما سوالات آنان را جدی میگیرید، اما این کار را برای هر سوال انجام ندهید.
- توضیح دهید که نقش شما برای شرکت چقدر مهم است: گاهی، بهویژه در شرکتهای کوچکتر، آنان ممکن است کاملاً ندانند چرا به یک دانشمند داده نیاز دارند. اگر این مورد باشد، تأکید کنید که چگونه میتوانید با بهبود محصولات موجود یا ایجاد راهحلهای جدید، دید و سود شرکت را افزایش دهید.
- صنایع متفاوت هستند: کارکردن بهعنوان یک حرفهای داده در حوزههای مختلف ممکن است بسیار متفاوت باشد. یک شرکت بیوتکنولوژی با یک ارائهدهنده خدمات ابری متفاوت است. کمی زمان بگذارید تا مشخصات حوزه شرکت را درک کنید و نشان دهید که میخواهید یاد بگیرید، اما اساساً هر کسی با دادهها کار میکند و دادهها بهروشهای مشابهی در دسترس هستند، صرفنظر از صنعت.
- مواجهه با ردشدن: این واقعیت بازار کار رقابتی امروز است. از اشتباههای خود یاد بگیرید، مهارتهای جدید بیاموزید و مهارتهای قدیمی را بهبود بخشید. از کارکنان باتجربهتر، بهویژه اگر در حوزه داده کار میکنند، مشاوره بگیرید؛ همچنین میتوانید از مصاحبهکننده بازخورد بگیرید اگر در درخواست برای یک نقش موفق نباشید.
جمعبندی
در این بهصورت جامع سوالات مصاحبه SQL را بررسی کردیم. این سوالات از سطح مقدماتی تا پیشرفته را پوشش میدهند و شامل مباحثی چون انواع مختلف JOINها و تفاوتهای آنها، بهینهسازی عملکرد و استفاده از کلمات کلیدی هستند. هدف این مطلب آمادهسازی کاربران برای موفقیت در مصاحبههای شغلی مرتبط با SQL است، با تأکید بر مهارتهای عملی و مفاهیم کلیدی که برای تحلیلگران داده و مهندسان داده ضروری است.
پرسشهای متداول
INNER JOIN و OUTER JOIN چه تفاوتی دارند؟
INNER JOIN فقط رکوردهای مطابقتیافته در هر دو جدول را بازمیگرداند، در حالی که OUTER JOIN شامل رکوردهای نامطابق نیز میشود.
چگونه میتوان عملکرد کوئریهای SQL را بهبود بخشید؟
از ایندکسها، فیلترهای مناسب و جداول موقت استفاده کنید و کوئریها را بهینهسازی کنید.
SELF JOIN چیست؟
SELF JOIN برای ترکیب یک جدول با خودش استفاده میشود و نیاز به نامهای مستعار برای جدول دارد.
کلیدهای خارجی در SQL چه مزایایی دارند؟
کلیدهای خارجی به ایجاد روابط بین جداول کمک کرده و از ورود دادههای نامعتبر جلوگیری میکنند.
تفاوت UNION و UNION ALL چیست؟
UNION رکوردهای تکراری را حذف میکند، اما UNION ALL تمامی رکوردها را شامل میشود.
یادگیری تحلیل داده را از امروز شروع کنید!
دنیای دادهها جذاب است و دانستن علم داده، توانایی تحلیل داده، یا بازاریابی مبتنی بر داده، شما را برای فرصتهای شغلی بسیاری مناسب میکند. فارغ از رشته و پیشزمینه، میتوانید حالا شروع کنید و از سطح مقدماتی تا پیشرفته بیاموزید. اگر دوست دارید به این حوزه وارد شوید، پیشنهاد میکنیم با کلیک روی این لینک قدم اول را همین حالا بردارید.
مشاوران کافهتدریس به شما کمک میکنند مسیر یادگیری برای ورود به این حوزه را شروع کنید: