Query یا پرس و جو های SQL، درخواست هایی هستند که ما به سمت SQL می فرستیم تا بتوانیم با استفاده از آنها اطلاعات جدیدی را در دیتابیس ذخیره کنیم و یا اطلاعات موجود (Recordها) را بدست بیاوریم. اگر با دیتابیس در برنامه تان کار کرده باشید، می دانید که عموما ما به دنبال دریافت یک بخشی از اطلاعات با شرایط خاص هستیم.
مثلا: اسامی 10 دانشجوی برتر دوره ی "آموزش رایگان PHP 8 | از صفر تا اولین پروژه" که در دو ماه گذشته پروژه ی عملی آن را تمام کرده اند و نمره ی بالاتر از 75 گرفته اند.
هر کدام از بخش های این درخواست ما از دیتابیس را clause (عبارت یا بند) می گویند. حالا برای اینکه نتیجه ای که به دست ما میرسد، درست باشد این clause ها باید با ترتیب خاصی اجرا شوند. به این دنباله ی اجرا SQL query execution order یا دستور اجرای پرس و جو SQL گفته می شود. این دنباله مشابه نحوه ی برنامه ریزی مرحله به مرحله ی کارها برای رسیدن به نتیجه ی نهایی مطلوب است. یکی دیگر از تعریف های SQL query execution order مراحل بهینه سازی نتایج جستجو در دیتابیس است. که این تعریف اشاره ی مستقیمی به ماهیت و کاربرد، فهم این دنباله دارد.
در زیر ترتیب اجرای هر Clause را در SQL مشاهده می کنید:
1- FROM: در ابتدا داده های اولیه (Base Data)، یعنی تمام داده هایی که ما میخواهیم روی آنها بقیه ی کارها را انجام بدهیم مشخص می شوند. اگر از Join استفاده کرده باشید هم در همین مرحله جدول هایی که خواسته اید، اطلاعاتشان باهم Join می شود تا یک دسته اطلاعات مشخص در اختیارتان قرار بگیرد.
2- WHERE: داده هایی که در مرحله ی قبلی تجمیع کرده بودید، در این مرحله فیلتر می شوند تا داده های جدیدی بدست بیاید.
3- GROUP BY: حالا داده هایی که فیلتر شده اند در این مرحله گروه بندی می شوند.
4- HAVING: حالا وقت آن است که فقط گروه هایی که اطلاعات منتخب ما در آنها هستند اجازه ی ورود به گام های بعدی را بدست بیاورند. در این مرحله هم گروه ها فیلتر می شوند.
5- SELECT: حالا که طی مراحل بالا تعداد زیادی از داده های اولیه حذف شده اند، وقت آن است که داده هایی که ما میخواهیم انتخاب شده و جدا شوند.
6- ORDER BY: در مرحله ی ششم داده های انتخاب شده براساس شرایطی که ما می خواهیم مرتب می شوند.
7- LIMIT: حالا روی داده های مرتب شده، محدودیت مورد نظر مان اعمال می شود.
![SQL queries run in this order](https://sokanacademy.s3.ir-thr-at1.arvanstorage.ir/18734/conversions/1669272233498-default.webp)
این مقاله برگردانی آزاد از نوشته های آقای Dr. Milan Milanović است که پیشنهاد می کنم مطالب ایشان را دنبال کنید. من قصد دارم با توجه به چکیده و مفید بودن مطالب ایشون، بعضی از آنها را که بیشتر از همه برای خودم هم جذاب بودند، در سکان پلاس با شما به اشتراک بذارم. البته چیزهایی هم برای توضیح بیشتر و فهم راحت تر به آن ها اضافه خواهم کرد.
اگر به SQL علاقه مند هستید یا با دیتابیس سر و کار دارید، دوره آموزش SQL و MySQL را مطالعه بفرمایید.