تا %60 تخفیف خرید برای 8 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش کوئری (Query) گرفتن از SQL قسمت 12 : ساختار دستور SELECT

قبل از اینکه به سراغ Query گرفتن از SQL سرور برویم بایستی یاد بگیریم که چگونه به Object ها دسترسی پیدا کنیم یا در اصطلاح فنی به Object ها رجوع یا Refer کنیم. هر Object در داخل یک Database برای خود دارای 4 قسمت برای نامگذاری می باشد. اولین قسمت اسم سروری که در آن قرار گرفته است ، دومین قسمت نام Database ای است که در آن قرار می گیرد ، سومین قسمت Schema ای است که Object در آن قرار گرفته است و در نهایت نام خود Object می باشد. نام سرور قطعا در اینجا سروری است که Database های ما را در خود نگه می دارد ، قرار دادن نام سرور برای مشخص کردن Object ها کاملا اختیاری است و اگر شما برای Refer کردن به Object های خود نام سرور را نداشته باشید مشکلی پیش نخواهد آمد و دلیل این امر این است که SQL سرور بصورت پیشفرض در صورت قرار ندادن نام سرور ، همین سروری که به آن متصل شده اید را به عنوان نام سرور در نظر می گیرد. در ادمه در بیشتر Query هایی که می گیرد متوجه خواهید شد که تقریبا در هیچکدام از آنها شما نام سرور را قرار نمی دهید و همین موضوع دقیقا برای نام Database نیز صادق است ، شما باید تعریف کنید که Object شما در کدام Database قرار دارد اما اگر اینکار را انجام ندهید مشکلی نیست ، SQL در این حالت مانند مرحله قبلی نام Database ای را در نظر خواهد گرفت که شما در حال حاضر به آن متصل شده اید ، بنابراین برای اشاره دقیق به یک Object در SQL سرور موارد زیر لازم می باشد:

  • نام سرور Server Name
  • نام دیتابیس Database Name
  • نام Schema یا Schema Name
  • نام Object یا Object Name

Schema در SQL سرور در واقع چیزی شبیه به پوشه یا Folder است که ساختار Object های ما را مشخص می کند در کنار اینکه ما می توانیم با استفاده از آنها Permission ها را ایجاد کنیم و همچنین استفاده مجدد از Name ها داشته باشیم. نکته ای که در خصوص Schema وجود دارد این است که در صورتیکه شما یک Schema برای Refer کردن به Object خود در نظر نگیرید و یا اینکه Schema ای که در نظر گرفته باشید موجود نباشد از قبل می توانید یک Default Schema یا Schemaی پیشفرض برای Object خود در نظر بگیرید که در صورتیکه هر یک از موارد بالا مشاهده شد SQL سرور از آن استفاده کند ، Schema ای به نام dbo وجود دارد که معمولا به عنوان پیشفرض از طریق SQL سرور انتخاب شده است. همیشه پیشنهاد می شود که برای Object خود Schema را تعریف کنید ، دلیل اصلی این مورد این است که شما تنها کاربر SQL سرور مورد نظر نیستید و ممکن است افراد دیگری نیز از Schema ای که شما تعیین کرده اید استفاده کنند و در آن تغییرات اعمال کنند و ممکن است در این حالت کدهای شما نیز دچار اختلال شود ، بنابراین پیشنهاد می شود که همیشه برای خود Default Schema تعریف کنید. در نهایت پس از تمامی این مراحل شما باید اسم Object را مشخص کنید که قرار دادن این اسم الزامی است و شما برای اتصال به Object حتما باید اسم آن را بدانید.

استفاده از Keyword ها و Special Characters در Object Name های SQL سرور

SQL سرور نیز مانند سایر زیان های برنامه نویسی برای نامگذاری Object های خود دارای قواعد و قوانین خاص خود می باشد. از جمله برخی از این قوانین می توانیم به استفاده کردن از حروف و کاراکتر Underscore __ در ابتدای اسامی Object ها اشاره کرد ، در ادامه کلمه Object شما می توانید از حروف ، اعداد و کاراکتر Underscore استفاده کنید ، اما نکته جالب در خصوص نامگذاری Object ها در SQL سرور این است که درست است که شما نمی توانید در حالت عادی از این قوانین سرپیچی کنید اما با رعایت کردن یک ساختار جالب می توانید تقریبا هر اسمی برای Object خود انتخاب کنید ، برای مثال فرض کنید من می خواهم یک Object به اسم ITPRO@IR! ایجاد کنم ، در حالت عادی نمی توانید به چنین Object ای Refer کنید اما اگر برای Refer کردن به این Object آن را در داخل براکت به شکل [] قرار بدهید و یا داخل دابل کوتیشن به شکل "" قرار بدهید می توانید از هر اسمی برای Object های خود استفاده کنید .

اما نکته بسیار مهم در خصوص استفاده از دابل کوتیشن این است که این حالت بصورت پیشفرض در SQL سرور قابل استفاده نیست و شما بایستی ابتدا قابلیت آن را فعال کرده و سپس برای Refer کردن به SQL Object های خود از آن استفاده کنید. به این قابلیت در اصطلاح فنی Quoted Identifiers گفته می شود. اما برای اینکه در ایجاد این موارد دچار ابهام نشوید دقت کنید که اکثر DBA ها از براکت های مربعی یا همان [] برای اینکار استفاده می کنند و شما هم بهتر است برای اینکه گیج نشوید از این روش برای Refer کردن به Object ها استفاده کنید. البته تنها همین دلیل استفاده از براکت نیست ، تقریبا تمامی نرم افزارهایی که بصورت خودکار کدهای SQL تولید می کنند برای نمایش Object ها از براکت استفاده می کنند ، این قالب تقریبا بصورت یک استاندارد در آمده است و به همین دلیل که استاندارد است برنامه نویسی و کد نویسی برای این نرم افزارها نیز راحت تر خواهد بود ، سعی کنید فارق از همه مسائل در کارهای خود استاندارد کار کنید این کاری است که تقریبا هیچ DBA ایرانی انجام نمی دهد.

حساسیت به حروف بزرگ و کوچک یا Case Sensitivity در SQL سرور

سئوال بعدی که همیشه در ذهن عزیزان پیش می آید این است که آیا SQL سرور یا بهتر بگوییم زبان T-SQL به حروف بزرگ و کوچک حساس است یا خیر ؟ پاسخ این موضوع را بصورت جامع و همیشه به یک صورت می شود ارائه کرد ، همیشه فرض کنید نرم افزار یا زبان برنامه نویسی که با آن کار می کنید Case Sensitive است و به وارد کردن حروف بزرگ و کوچک حساس است ، دلیل این تفکر بسیار ساده است ، اگر شما فرض را بر این بگذارید که زبان شما Case Sensitive است و همه کدهای خود را به این صورت وارد کنید در نهایت اگر Case Sensitive هم نباشد مشکلی برای کدهای شما پیش نمی آید ، اما اگر کدهای خود را بر فرض این بنویسید که زبان Case Sensitive نیست ، حتما بعدها به مشکل خواهید خورد.

علاوه بر این توجه کنید که در بسیاری از مواقع پیش می آید که محیط کاری شما یک محیط چند لایه اس و پیچیده است که از انواع کدها بایستی در آن استفاده شود ، در واقع به چنین محیط های ترکیبی یا Mixed Environment گفته می شود ، فرض کنید در حال حاضر در محیطی کار می کنید که کدهای تولیدی شما Case Sensitive نیستند اما مجبور می شوید از محیط دیگری که کدهای آن Case Sensitive است یک فراخوانی داده یا Call داشته باشید ، اگر شما در همان محیط اولی Case Sensitive بودن را رعایت می کردید در فراخوانی کدهای زبان دیگر مشکلی ندارید اما اگر کدهای خود را Case Sensitive وارد نکرده باشید مشکلات فراوانی به وجود خواهد آمد. اگر فرض کنیم همه زبان های کد نویسی از جمله T-SQL بصورت Case Sensitive باشند زندگی و کد نویسی ما بسیار راحت تر خواهد شد.

اما به هر حال سئوال اصلی اینجا بود که آیا T-SQL به حروف بزرگ و کوچک حساس است یا خیر ؟ جواب خیر است . زبان T-SQL به حروف بزرگ و کوچک حساس نیست اما ما بر حسب رعایت یک استاندارد من در آوردی تمامی کدها را با حروف بزرگ وارد می کنیم تا خوانایی کدهای ما بالاتر برود ، البته به این نکته همچنان توجه داشته باشید که مقایسه رشته ها همچنان در SQL سرور Case Sensitive می باشد ، شما می توانید قابلیت Case Sensitivity را در سطح سرور ، در سطح Database ها و حتی در سطح Column ها فعال یا غیر فعال کنید ، حتی شما می توانید در سطح Query های خود نیز Case Sensitivity را داشته باشید یا نداشته باشید.

قالب دستور SELECT در SQL سرور یا Select Statement Structure

خوب حالا که با روش متصل شدن به Database ها آشنا شدید نوبت به معرفی ساختار اولین دستور مهم از سری دستورات T-SQL به نام SELECT می باشد . توجه کنید که ما در بیان فارسی می گوییم دستور SELECT در صورتیکه این دستور مجموعه ای از دستورات است و به همین دلیل به خاطر ساختار آن به آن SELECT Statement گفته می شود .مهمترین نکاتی که در خصوص دستور SELECT باید مد نظر داشته باشید این است که این دستور از شش قسمت اصلی تشکیل شده است :

  • دستور FROM : این دستور مشخص کننده Table ای است که می خواهیم Data را از آن بگیریم
  • دستور WHERE : این دستور تمامی شروط برای دستیابی به اطلاعات Row ها را تعیین می کند
  • دستور GROUP BY : برای گروه بندی داده ها استفاده می شود برای مثلا گروه کالا ها ، گروه مناطق جغرافیایی و ...
  • دستور HAVING : این دستور زمانیکه از GROUP BY استفاده نمی کنید می توانید از HAVING به جای WHERE استفاده کنید.
  • دستور ORDER BY : به شما اجازه مرتب سازی خروجی های Column ها را می دهد

حالا شما اگر حتی بخواهید پیچیده ترین Query ها را نیز از SQL سرور بگیرید تنها از همین شش قسمت استفاده خواهید کرد. در واقع حتی Query های پیچیده هم معمولا تنها از 3 عدد از این قسمت ها استفاده می کنند و از همه آنها استفاده نمی شود ، مهمترین قسمت ها FROM ، WHERE و GROUP BY می باشد. در مقاله های بعدی بصورت ویژه با این دستورات کار خواهیم کردو بصورت عملی کاربرد آنها را درخواهید یافت. امیدوارم مورد توجه شما قرار گرفته باشد . ITPRO باشید.

نویسنده : محمد نصیری

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

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

نظر شما
برای ارسال نظر باید وارد شوید.
9 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند