آخرین فرصت تا %60 تخفیف خرید یکجای دوره ها برای 6 نفر فقط تا
00 00 00

ترتیب اجرای دستورات SELECT در SQL

اصلی ترین دستور دردیتابیس های رابطه ای دستور لود کردن یا خواندن اطلاعات است  که در زبان SQL با دستور SELECT مشخص می شود. نمای کلی این دستور به شکل زیر است:

SELECT columns
From table
Where conditions
Group By columns
Having conditions
order by columns

نکته ای که وجود دارد این است که این دستورات با ترتیبی که نوشته شده اند اجرا نمی شوند و ترتیب اجرا و ارزیابی آنها با نحوه نوشتنشان متفاوت است. فهمیدن ترتیب اجرای دستورات SELECT کمک می کند تا معنی برخی خطاها را بهتر درک کنیم. برای مثال به کد زیر دقت کنید

Select FirstName+' '+LastName as FullName
From UserTabel
Where len(FullName)>5

اگر شما یک جدول به نام UserTabel داشته باشید که در آن دو ستون به نام های FirstName, LastName هم داشته باشید و کد بالا را اجرا کنید حتما به شما خطا می دهد. خطایی که به شما می گوید که ستونی به نام FullName پیدا نشده است. و باید بدانیم که دلیل این نوع خطاها ترتیب اجرای بخش های مختلف دستورات Select است. نحوه اجرای بخش های مختلف دستور Select به شکل زیر است

From table
Where conditions
Group By columns
Having conditions
Select columns
Order By columns

این ترتیب اعلام می کند که

  1. اول جدول هدف مشخص می شود.
  2. و بر روی داده های شرط where اعمال می شود.
  3. سپس اگر نیاز به گروه بندی اطلاعات باشد در بخش group by اطلاعات بر اساس ستون های مشخص شده گروه بندی می شوند. دقت داشته باشید که این گروه بندی بر روی داده هایی که از فیلتر where رد شده اند اعمال می شود.
  4. بعد از گروه بندی شرط Having بر روی گروه های به وجود آمده در مرحله قبل اعمال خواهد شد.
  5. بعد از آن ستون هایی که باید انتخاب شوند در بخش select انتخاب می شوند.
  6. در قدم آخر ستون های مورد نظر مرتب سازی و sort می شوند.

با توجه به ترتیبی که گفته شد می توان فهمید که دلیل خطای کوئری بالا چیست. در اصل دلیل خطا در کد بالا این است که وقتی که اجرای کوئری به خط Where می رسد هنوز قسمت Select اجرا نشده است. به همین دلیل نام مستعار (alias) که در بخش select ساخته شده است در بخش where قابل شناسایی و قابل اجرا نیست و شکل درست این کوئری مانند کد زیر است:

Select FirstName+' '+LastName as FullName
From UserTabel
Where len(FirstName+' '+LastName)>5

یعنی به جز قسمت order by که بعد از دستور select اجرا می شود بقیه دستورات قبل از بخش select اجرا می شوند و اگر یک نام مستعار در select انتخاب کنیم در بخش هایی مانند where , group by قابل استفاده نیست و اگر نوشته شوند هنگام اجرا خطا دریافت خواهیم کرد.

با وب سایت Tosinso همراه باشید.

نویسنده: مهدی عادلی فر

منبع: جزیره بانک های اطلاعاتی Tosinso

استفاده از مطالب سایت با ذکر نام نویسنده و منبع مجاز است.

0 نظر

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

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر