ترتیب اجرا دستورات SELECT در یک Query از 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
این ترتیب اعلام می کند که
با توجه به ترتیبی که گفته شد می توان فهمید که دلیل خطای کوئری بالا چیست. در اصل دلیل خطا در کد بالا این است که وقتی که اجرای کوئری به خط 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. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.