در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش کوئری (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 باشید.

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

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

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

#آموزش_sql_server_2008 #آموزش_دستورات_SQL #schema_در_sql #آموزش_sql_server #آموزش_گام_به_گام_sql_سرور #آموزش_sql_سرور #آموزش_sql #آموزش_sql_سرور_2012 #آموزش_گام_به_گام_query_گرفتن
عنوان
1 آموزش کوئری (Query) گرفتن از SQL قسمت 1 : معرفی SQL سرور رایگان
2 آموزش کوئری (Query) گرفتن از SQL قسمت 2 : Relational Database ها رایگان
3 آموزش کوئری (Query) گرفتن از SQL قسمت 3 : ساختار Table ها رایگان
4 آموزش کوئری (Query) گرفتن از SQL قسمت 4 : کلیدهای اصلی و فرعی رایگان
5 آموزش کوئری (Query) گرفتن از SQL قسمت 5 : رابطه بین جدول ها رایگان
6 آموزش کوئری (Query) گرفتن از SQL قسمت 7 : طراحی جدول ها رایگان
7 آموزش کوئری (Query) گرفتن از SQL قسمت 7 : طراحی ساده یک DB رایگان
8 آموزش کوئری (Query) گرفتن از SQL قسمت 8 : Normalization رایگان
9 آموزش کوئری (Query) گرفتن از SQL قسمت 9 : دستورات اولیه SQL رایگان
10 آموزش کوئری (Query) گرفتن از SQL قسمت 10 : محیط Management Studio رایگان
11 آموزش کوئری (Query) گرفتن از SQL قسمت 11 : اتصال به Database رایگان
12 آموزش کوئری (Query) گرفتن از SQL قسمت 12 : ساختار دستور SELECT رایگان
زمان و قیمت کل 0″ 0
9 نظر
mohammadtaheri2008

با سلام

ممنون از مطالب مفید و عالی تون

میخواستم بدون این مطالب رو ادامه نمیدید؟

من مشکل زیادی دارم

تا درس دوازدهم من تمام مشکلاتم تا این مرحله حل شده منتظر بثیه مطالب هستم

محمد نصیری

سلام ، متاسفانه بر اثر مشکلاتی که پیش اومده فعلا نمی تونم این مجموعه رو ادامه بدم اما قطعا در آینده تکمیلش می کنم ، از این بابت عذرخواهی می کنم چون ناتمام موندن مطلب جالب نیست ، اما به هر حال اگر سئوالی یا ابهامی براتون پیش اومد در انجمن مدیریت پایگاه داده سئوالتون رو مطرح کنید هم من و هم دوستان دیگه هستند که پاسخ شما رو بدند تا از کارتون عقب نیوفتید. موفق باشید

mohammadtaheri2008

خیلی ممنون از تلاش شما

مطالبی که گذاشته بودید بسیار راحت و قابل فهم بود

آیا فایلی (PDF-Power Point-Wordو...)هست که به من بدید تا من بتونم فعلا از اونها استفاده کنم؟

ممنون میشم

محمد نصیری

من اینها رو از جایی ترجمه نکردم و با مطالعه کردن منابع مختلف نوشتم ، پیشنهاد می کنم کتاب Querying SQL Server 2012 رو مطالعه کنید که مرجع این سری آموزشی برای SQL هست.

mohammadtaheri2008

ممنون از راهنمایی تون

خدانگهدار

feriiloo

درود و خسته نباشید

من همه مطالب 12 قسمت رو مطالعه کردم

شیوه تدریس بسیار عالی و قابل فهم بود

متشکر از تلاشتون برای این مبحث

امیدوارم بتونید این مبحث رو بصورت کامل بعد از یک سال و چهار ماه ارائه بدید چون تازه داشت شروع میشد که متاسفانه ناتمام موند

اکثر اساتید برای درک مفاهیم تلاشی نمیکنند

باز هم از تلاشتون برای تکمیل این مبحث سپاسگذارم

همیشه موفق و موید باشید.

zorie

توی اینترنت وب سایتهای زیادی هست که برای دانلود یا خواندن یک مطلب آموزشی کاربر رو مجبور می کنن که عضو اون سایت بشه و اما در 99 درصد این مواقع چون فقط مجبوریم و با نام و آدرس ایمیل اشتباه و همون یکبار به اون وب سایت سر می زنیم

اعتراف می کنم من خودم یکی از اون آدمها هستم

به صورت اتفاقی با مطلب آقای خانلری با سایت شما مواجه شدم ولی اینقدر آموزش هاتون عالی ، طبقه بندی شده و پیوسته بود که داوطلبانه عضو شدم و دو روزه که مدام دارم آموزشهای این وب سایت رو میخونم

بهتون تبریک میگم کارتون واقعا عالیه

فقط خواهش می کنم این سری آموزشها رو رها نکنید حیفه به خدا ادامشون بدید حتی اگه شده فقط فایل صوتی بزارید که شاید آسون تر باشه براتون

باز هم از همگی ممنونم

minafarahmand

با سلام و تشکر فراوان

یادم میاد سر کلاس پایگاه داده یک استادی داشتیم که واقعا هر چقدر سعی کردم توضیحاتشون رو خوب خوب بفهمم نشد و موارد مربوط به نرمال سازی و کل این مباحث غول شده بود در حالی که ته دلم میدونستم درس محبت ار بود زمزممه محبتی جمعه به مکتب آورد طفل گریز پای را... بابت زبان سلیس اموزیشتون و هدف خیرتون از شما تشکر میکنم . اما خیلی خیلی متاسف شدم که بعد از این همه برنماه ریزی و اشتیاق بریا مطالعه موضواعت این پیچ یهو دیدم بعد درس 12 هیچ لینکی نیست. حیف ... ای کاش امکن ادامه این تاپیک بود تا این مسیر نیمه تمام نمیموند .

محمد نصیری

سلام خانم فرهمند ، بنده اصلا تخصصی در زمینه SQL و پایگاه داده ندارم و این مطالبی هم که مشاهده کردید حاصل علاقه من بود که درگیر یک موضوع مرتبط برای مدتی شده بودم ، به هر حال الان دوره های آموزشی مهندس احمدی بصورت ویدیویی وجود داره که خیلی خیلی راحت مفاهیم رو بیان کردند.

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

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....