آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش T-SQL

دوره های مرتبط با این مقاله

مقدمه ای بر زبان SQL و Transact-SQL

اگرچه بسیاری از عملیات پایگاه داده را به صورت visual انجام می دهید، برخی دیگر از عملیات برای اجرا نیاز به کدنویسی دارند. Microsoft SQL Server برای کمک به شما در این زمینه، یک code editor (ویرایش گر کد) و نیز تعداد زیادی code template ارائه می دهد.
برای باز کردن و استفاده از ویرایش گر:
1. منوی اصلی را باز کرده بدین صورت اقدام نمایید: File -> New -> Query With Current Connection.
2. در Standard toolbar، بر روی دکمه ی New Query، کلیک نمایید.
3. در پنجره ی Object Explorer، بر روی اسم server راست کلیک نموده و New Query را کلیک انتخاب کنید. در پی عملیات بالا، یک پنجره ی جدید باز می شود و در سمت راست interface (رابط کاربری) قرار می گیرد.
در درس های این سری آموزشی، چنانچه ابتدا File، سپس New و بعد از آن گزینه ی Query With Current Connection را انتخاب کنید و یا روی دکمه ی New Query کلیک نمایید، به دنبال آن یک پنجره نمایان می شود که آن پنجره Query Editor نام دارد.


Save کردن کدها

صرف نظر از اینکه قبلا کدی در query editor نوشته اید یا خیر، می توانید سند مورد نظر را هر زمان که لازم می دانید، ذخیره نمایید.
برای ذخیره ی آن:
1. دو دکمه ی Ctrl + S را همزمان فشار دهید.
2. در منوی اصلی، بدین ترتیب عمل کنید: File -> Save SQLQueryX.sql....
3. یا در Standard toolbar، بر روی دکمه ی آموزش SQL کلیک نمایید.
پس از آن از شما درخواست می شود یک اسم برای فایل مورد نظر انتخاب نمایید. پس از ذخیره ی فایل، خواهید دید که اسم فایل ذکر شده بر روی tab سند مورد نظر نمایش داده می شود.


مقدمه ای بر زبان SQL (زبان ساختارمند پرسمان ها)

پس از ایجاد و برقراری اتصال، می توانید اقدامات لازم را انجام دهید، این عملیات می تواند ایجاد یک پایگاه داده یا مدیریت و پردازش داده ها باشد. برای مهیا کردن زمینه ی ایجاد و مدیریت پایگاه داده، از یک زبان مدیریت و پردازش داده یا به انگلیسی DML بهره می گیریم. زبان ساختارمند پرسمان که تحت عنوان SQL نیز شناخته می شود، درواقع یک زبان مدیریت داده/DML است که برای ایجاد و مدیریت پایگاه داده بر روی سیستم های کامپیوتری مختلف بکار می رود.
مانند دیگر زبان های مستقل از محیط (non-platform) نظیر C/C++، Pascal یا Java، زبان SQL را می توان در سیستم های مختلف پایگاه داده مورد استفاده قرار داد. به منظور تنظیم SQL برای کار با Microsoft SQL Server، شرکت مایکروسافت، Transact-SQL را به عنوان پیاده سازی (نسخه ی ویژه ی) این شرکت از زبان SQL ارائه داد. اگرچه SQL Server بسیار پایبند به قوانین مرتبط با زبان استاندارد SQL می باشد، تعدادی جزئیات داخلی و منحصر به خود دارد که به دیگر سیستم های پایگاه داده همچون MySQL، Oracle یا حتی Microsoft Access اعمال نمی شود. گفتنی است که پایگاه داده های مزبور همگی به نسبت های مختلف به قوانین کلی زبان استاندارد SQL پایبند می باشند.


آموزش عملی: معرفی کدهای Transact-SQL

1. رایانه ی خود را روشن کنید.
2. با همان حساب کاربری که برای نصب Microsoft SQL Server استفاده کردید، وارد شوید (login کنید).
3. به منظور راه اندازی Microsoft SQL Server، بدین ترتیب عمل کنید: Start -> (All) Programs -> Microsoft SQL Server 2008 -> SQL Server Management Studio.
4. در پنجره ی محاوره ی Connect to Server، روی Connect کلیک نمایید.

SQL Interpreter (مفسر SQL)

SQL یک زبان کامپیوتری است که با استفاده از آن به یک برنامه ی داخلی به نام مفسر یا Interpreter دستوراتی را برای اجرا می دهیم. همان طور که در بخش های مختلف مشاهده خواهید کرد، باید دستوراتی که به این مفسر ارائه می کنید، دقیق باشد. SQL یک زبان غیرحساس به کوچک و بزرگی حروف است، بدین معنی که CREATE، Create و create هیچ فرقی با یکدیگر ندارند. البته عبارات خود SQL را به طور معمول با حروف بزرگ می نویسند. با این کار می توان دستورات SQL را از دیگر عباراتی که برای ساخت پایگاه داده ی خود استفاده می کنید، تشخیص داد.
همان طور که در این مبحث و مباحث بعدی خواهیم آموخت، با نوشتن دستوراتی خاص، زبان SQL را برای مدیریت داده ها بکار می بریم. Microsoft SQL Server برای کمک به شما در این زمینه، یک پنجره به نام Query Editor ارائه می دهد که می توان کدهای SQL را در آن نوشته و اجرا کرد. برای دستیابی و استفاده از آن، در پنجره ی Object Explorer، بر روی اسم server راست کلیک کرده و گزینه ی New Query را انتخاب نمایید. به همین ترتیب، می توان هر تعداد نمونه New Query Editor که لازم دارید، باز کرده و مورد استفاده قرار دهید.
با باز شدن Query Editor، یک child window نمایش داده می شود که می توانید در آن کد خود را بنویسید. هر بار که یک پنجره ی جدید باز می شود، آن پنجره درواقع به صورت یک tab نمایش داده می شود. برای رفتن از یک پنجره ی کد به پنجره ی دیگر، کافی است روی تب آن کلیک نمایید. برای بستن یک نمونه ی query، ابتدا می بایست با کلیک بر روی تب مربوطه به آن دسترسی پیدا کنید، سپس در سمت راست بر روی دکمه ی کلیک نمایید. چنانچه کد خود را در Query Editor نوشته باشید، در آن صورت به هنگام بستن از شما پرسیده می شود آیا مایل به ذخیره تغییرات هستید یا خیر. اگر می خواهید کد نوشته شده را حفظ نمایید، در آن صورت با یستی دکمه ی Save را فشار دهید.


اجرای یک دستور

در مباحث آتی با شیوه های مختلف ایجاد کد با استفاده از دستورات SQL آشنا خواهیم شد. Query Editor، هنگامی که برای اولین بار ایجاد می شود، یک پنجره ی سفید بزرگ است که در آن دستورات SQL خود را می نویسید.


آموزش SQL

پس از نوشتن دستور مورد نظر، می توان آن را برای فعال سازی یا صرفا تست، اجرا نمایید. برای اجرای آن می توان از روش های زیر استفاده کرد:
1. F5 را فشار دهید.
2. در فهرست اصلی، Query -> Execute را انتخاب کنید.
3. در SQL Editor toolbar، دکمه ی آموزش SQL Execute را کلیک نمایید.
4. داخل محدوده ی پنجره ی code editor، راست کلیک کرده و سپس Execute را کلیک نمایید.
پس از اجرای کد، خواهید دید که پنجره ی Query Editor به دو پنجره ی افقی تبدیل می شود.

آموزش SQL

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


مثال: آموزش SQL

چنانچه در کد هیچ خطایی وجود نداشت، بسته به کد و نوع دستوری که درج کرده اید، عملیات خاصی اجرا می شود (اتفاق می افتد).


ابزار جانبی مربوط به کدنویسی SQL

رنگی کردن کدها

برای تشخیص بخش های مختلف کد از یکدیگر، می توان با استفاده از ابزار code editor آن ها را رنگی کرد. برای این منظور، در منوی اصلی، tools -> Options را کلیک نموده و در درختی که سمت چپ مشاهده می کنید، گزینه ی Fonts and Colors را انتخاب کنید:


آموزش SQL

برای مشخص کردن و انتخاب رنگ دلخواه، در کادر Display items، یک گزینه انتخاب نموده و سپس رنگ های آن را در لیست های کشویی Item Foreground و Item Background تغییر دهید. همان طور که می بینید هر دو checkbox مورد نظر با رنگ انتخابی پر می شود. اگر می خواهید از رنگی استفاده کنید که در لیست حاضر موجود نیست، بر روی دکمه ی Custom مربوطه کلیک نموده و رنگ مد نظرتان را ایجاد کنید.

Code template

برای آسان تر شدن کدنویسی، Microsoft SQL Server تعداد زیادی قالب یا Template ارائه می کند که می توان متناسب با نیاز خود تنظیم (سفارشی) کرد. از طریق پنجره ی Template Explorer، می توان به تمامی این قالب های کد دسترسی پیدا کرد. برای دستیابی به پنجره ی نام برده، در منوی اصلی، بر روی View -> Template Explorer کلیک کنید.
پنجره ی Template Explorer آیتم خود را در یک لیست درخت گونه به نمایش می گذارد. مشابه بیشتر پنجره ها در Microsoft SQL Server، این پنجره دارای قابلیت متصل شدن به کناره های محیط (قابل dock) و شناور (float) بودن می باشد.


آموزش SQL

به منظور استفاده از یک code template، ابتدا بایستی یک Query Editor ایجاد کنید. در پنجره ی Template Explorer، رده یا category مورد نظر را باز نمایید، سپس گزینه ی مورد نظر را کشیده و در Query Editor جای گذاری کنید. لزومی ندارد Query Editor کاملا خالی باشد، بدین معنی که اگر از قبل کدهایی در آن وجود داشته باشد، می توان یکی از گره ها را از پنجره ی Template Explorer کشیده و آن را در جایی که کد جاری قرار است نوشته شود، جای گذاری کنید. پس از آن می توانید کد مورد نظر را مطابق با نیاز خود ویرایش نمایید.


Comment ها (توضیحات کد)

اگر بخواهیم قسمتی از کد در صفحه حضور داشته باشد ولی در برنامه بی تاثیر باشد آنرا Comment می کنیم . Comment یک نوشته ی متنی است که مفسر به عنوان دستور یا کدی که باید اجرا شود درنظر نمی گیرد. بر این اساس یک comment را می توان به هر طریقی که دوست دارید، بنویسید. به عبارتی دیگر هرچه در آن درج کنید، کاملا توسط مفسر نادیده گرفته شده و اجرا نمی شود. Transact-SQL از دو نوع comment پشتیبانی می کند. می توان یک comment را با /* آغاز کرده و با */ به پایان رساند، این سبک توضیح نویسی درواقع چند خط comment را دربرمی گیرد و اغلب در زبان های مشتق شده از C بکار می رود.


مثال:
/* First find out if the database we want to create exists already *//font>

یک comment می تواند چند سطر ادامه داشته باشد، بدین شکل:


   /* First find out if the MotorVehicleDivision database we 
   want to create exists already.
   If that database exists, we don't want it anymore. So,
   delete it from the system. */

Transact-SQL از سبک توضیح نویسی که در آن -- استفاده می شود نیز پشتیبانی می کند. این شیوه ی کامنت گذاری فقط برای یک خط عمل می کند،آغاز خط با -- و هر چیزی که در سمت راست -- قرار بگیرد جزئی از کامنت می باشد و مانند دستورات Transact-SQLنمی باشد(اجرا نمی شوند). نمونه ای از آن را در زیر مشاهده می کنید:


-- =============================================
-- Database: MotorVehicleDivision
-- =============================================
/* First find out if the MotorVehicleDivision database we 
   want to create exists already.
   If that database exists, we don't want it anymore. So,
   delete it from the system. */
-- Now that the database is not in the system, create it

پایان دستور

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


شکستن خط کد طولانی

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


Section 1 \
SSection 2

برای شکستن خط و قرار دادن ادامه ی آن در سطر بعدی، ابتدا یک \ درج نموده، سپس باقی کد مورد نظر را در خط بعدی قرار دهید.


استفاده از کلیدواژه ی GO بجای نقطه ویرگول

برای جداسازی کدها از یکدیگر (برای نشان دادن اینکه کجا یک مجموعه دستور پایان می یابد و مجموعه دستور بعدی آغاز می شود)، می توان از کلیدواژه ی GO استفاده کرد (بر اساس قوانین زبان استاندارد SQL، در اصل باید از نقطه ویرگول استفاده کرد اما مفسر Microsoft SQL Server واژه ی کلیدی GO را به عنوان نشانگر پایان یک دستور پذیرفته و تفسیر می کند). برای انتخاب GO به عنوان تفکیک گر مجموعه دستورات SQL بایستی به فیلد ورودی Batch Separator در گره ی Query Execution، در کادر محاوره ای Options مراجعه نموده و در آنجا Go را انتخاب نمایید:

آموزش SQL

پنجره ی Propperties

علاوه بر پنجره ی Template Explorer، سرویس Microsoft SQL Server یک پنجره به نام Properties ارائه می دهد که در حل برخی مسائل به شما کمک می کند. برای دسترسی به پنجره ی مزبور:
1. در منوی اصلی، View -> Properties Window را کلیک نمایید.
2. بر روی پنجره ی سمت راست، راست کلیک نموده و گزینه ی Properties Window را انتخاب نمایید.
پنجره ی Properties نیز همانند دیگر پنجره های محیط از قابلیت هایی نظیر auto-hide، قابلیت اتصال به کناره های محیط و شناور بودن برخوردار می باشد.
پنجره ی Properties به پنج بخش تقسیم می شود:


آموزش SQL

پنجره ی Properties، از بالا با یک نوار عنوان آغاز می شود که property ها یا پارامترهای connection string در آن مشخص می شود. چنانچه پنجره به بخشی از صفحه متصل شده باشد، در آن صورت آموزش SQLWindow Position آموزش SQLAuto-Hide و دکمه ی آموزش SQL Close در سمت راست به نمایش درمی آیند.
در زیر نوار عنوان، پنجره ی ذکر شده یک لیست کشویی (combo box) نمایش می دهد. محتویات لیست کشویی به محتویات پنجره ی اصلی بستگی دارد. در زیر لیست کشویی، پنجره ی Properties یک نوارابزار نمایش می دهد که دارای سه دکمه می باشد: دکمه ی طبقه بندی (Categorized) آموزش SQL،ترتیب الفبایی آموزش SQLو دکمه ی نشان دهنده ی property ها آموزش SQL
در زیر نوارابزار (toolbar)، پنجره ی Properties لیستی از فیلدها را به نمایش می گذارد. این پنجره از نظر محتوا به پنجره ی اصلی وابسته می باشد.


مثال: آموزش SQL

در سمت راست، لیست به یک نوار پیمایش عمودی (scroll bar) مجهز می باشد. برای بازآرایی یا تنظیم مجدد لیست (تغییر ترتیب)، می توانید بر روی دکمه ی آموزش SQL کلیک نمایید.
هر یک از فیلدها در پنجره ی Properties از دو بخش برخوردار می باشد: اسم property مورد نظر و مقدار آن:


آموزش SQL

کادر سمت راست هر اسم property، نشانگر مقدار property می باشد. برخی از مقادیر را می توان تغییر داد و اما امکان ویرایش برخی دیگر وجود ندارد.
هنگامی که اسم property به نظر غیرفعال می رسد، بدین معنی است که امکان ویرایش مقدار آن وجود دارد.


استفاده ی عملی از محیط مدیریت بانک اطلاعاتی Microsoft SQL Server

پنجره ی Object Explorer

پنجره ی Object Explorer لیستی از آیتم ها را به صورت درخت نمایش می دهد. هر آیتم بر روی درخت درواقع یک گره یا node نامیده می شود. زمانی که یک گره خود دارای گره ای دیگر می باشد:
1. آن گره به اصطلاح گره ی فرزند خوانده می شود.
2. گره ی اصلی یا والد نیز یک علامت + نمایش می دهد.
برای نمایش دادن گره های فرزند، بایستی گره والد را باز کنید. برای این منظور:
1. بر روی گره ی والد دوبار کلیک کنید.
2. بر روی علامت + گره ی والد کلیک نمایید.
3. گره ی والد را کلیک نموده و بر روی کلید پیکان سمت راست کلیک نمایید.
یکی از پرکابردترین آیتم ها، درواقع اسم server ای که از آن استفاده می کنید، آن را می توان به راحتی با کلیک بر روی اولین گره در پنجره ی Object Explorer بررسی کرد. در مثال زیر، server مورد نظر Central نام گذاری شده است:

آموزش SQL

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

پنجره ی Object Explorer Details

به صورت پیش فرض،در سمت راست محیط Microsoft SQL Server Management Studio یک پنجره ی تهی نمایش داده می شود. پس از انتخاب آیتمی در پنجره ی Object Explorer، می توانید ناحیه ی سمت راست را برای نمایش اطلاعات دقیق در رابطه با آیتم انتخابی مورد استفاده قرار دهید. برای این منظور، View -> Object Explorer Details را کلیک نمایید. در پی این اقدام ناحیه ی سمت راست محیط با اطلاعات آیتم مربوطه پر می شود:


آموزش SQL

آن گره ای که بیشتر از دیگر آیتم ها برای شما کاربرد دارد، گره ی Databases خواهد بود. این گره دربردارنده ی اسم پایگاه داده های مستقر بر روی server می باشد. همچنین از این گره، می توان بسیاری دیگر از عملیات مورد نیاز را بر روی پایگاه داده ی مورد نظر اجرا کرد. برای مشاهده عملیات رایجی که می توان انجام داد، بایستی گره ی پایگاه داده و نیز تعدادی از گره های فرزند آن را باز کنید. برای این منظور، ابتدا گره ی Databases و در صورت لزوم یکی از گره های فرزند آن را باز کنید. به عنوان نمونه، برای راه اندازی PowerShell، بر روی گره ی Databases و یا server name کلیک کرده، سپس گزینه ی Start PowerShell را انتخاب نمایید:


آموزش SQL

مقدمه ای بر انواع عملیات در SQL

مقدمه ای بر عملگرها (operator) و عملوندها (operands) در SQL

Operation درواقع یک فعل یا عمل خاص است که بر روی یک یا چندین مقدار خاص اجرا می شود. این فعل می تواند ویرایش و اصلاح یک مقدار و یا تولید مقداری جدید با ترکیب مقادیر مختلف باشد. در operation حداقل یک مقدار و یک علامت شرکت دارند. به آن علامتی که در عملیات بکار می رود، عملگر یا operator می گویند و آن مقداری که بر روی آن عملیاتی صورت می گیرد و در عملیات شرکت دارد در اصطلاح عملوند یا operand می گویند.


چاپ خروجی با استفاده از دستور Print

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

PRINT WhatToPrint

هر چیز مجازی که می خواهید نمایش داده شود را در سمت راست دستور ذکر شده، درج نمایید. برای مثال، اگر می خواهید یک عدد ثابت (constant) را به عنوان خروجی چاپ کنید، کافی است آن را در سمت راست کلیدواژه ی PRINT وارد کنید، مانند نمونه ی زیر:


آموزش SQL

آیتمی که نمایش داده می شود، می تواند یک عملیات یا نتیجه ی عملیات باشد. در صورتی که تمایل دارید یک تک کاراکتر، یک واژه و یا یک جمله چاپ شود، در آن صورت باید آن را داخل تک کوتیشن قرار دهید. اگر می خواهید یک تک کوتیشن را داخل دستور خود گنجانده و در خروجی چاپ کنید، در آن صورت بایستی آن را دو بار بنویسید.


مثال: آموزش SQL

همچنین می توان یک عبارت را به صورت ترکیبی از اعداد و جملات چاپ کرد.


دستور SELECT

عملگر Select را می توان نمایش خروجی بکار برد. (موارد دیگر استفاده آن عبارت است از: انتخاب و استخراج اطلاعات مورد نظر از يک يا چند جدول و سپس مشاهده نتايج در يک جدول موقت). نحوه ی استفاده از دستور نام برده به صورت زیر می باشد:


SELECT What

با توجه به آنچه بالا گفته شد، برای استخراج و نمایش اطلاعات مورد نظر، ابتدا واژه ی کلیدی SELECT و پس از آن عدد، واژه، رشته یا عبارت مورد نظر را تایپ کنید. آیتم مورد نظر برای نمایش از همان قوانینی که برای چاپ خروجی در PRINT رعایت می کردیم، پیروی می کند. تفاوت های بین این دو دستور به شرح زیر می باشد:
1. PRINT غالبا برای تست یک مقدار ساده، یک رشته یا عبارت بکار می رود. این دستور نتایج و خروجی خود را در یک پنجره ی سفید، تحت تب Messages به نمایش می گذارد. PRINT را با تنهای یک مقدار می توان بکار برد.
2. SELECT پرکاربردترین عملگر در SQL محسوب می شود.دستور SELECT نتایج یا خروجی خود را در یک پنجره ی مرتب و طبقه بندی شده، تحت تبی به نام Results نمایش می دهد. همراه SELECT می توان از چندین مقدار استفاده کرد.
برای نمایش خروجی با استفاده از دستور SELECT، مشابه دستور PRINT، آن را در داخل تک کوتیشن محصور کرده و در سمت راست دستور یاد شده، درج نمایید:

آموزش SQL

همان طور که پیش تر ذکر شد، برخلاف دستور PRINT، دستور SELECT قادر به نمایش چندین مقدار می باشد. این مقادیر باید با تفکیک گر ویرگول از یکدیگر جدا شوند. در زیر مثالی در این زمینه را مشاهده می کنید:


SELECT 'Hourly Salary', 24.85;

نتیجه ی زیر را بدست می دهد:

آموزش SQL

گنجاندن یک دستور SELECT در SELECTدیگر (Nesting)

آنچه در سمت راست دستور SELECT قرار می گیرد، طبیعتا باید یک مقدار باشد.

SELECT 226.75;

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


مثال:
SELECT (SELECT 448.25);
GO

زمانی که یک دستور SELECT بلافاصله پس از دستور دیگری تعریف می شود، از دستور دومی با نام تودرتو یا nested یاد می شود.
همان گونه که می توان یک دستور SELECT را داخل یک دستور SELECT دیگر گنجاند، به همین ترتیب نیز می توان یک دستور SELECT سومی را داخل دستور دوم که خود تودرتو است، جای داد.


مثال:
SELECT (SELECT (SELECT 1350.75));
GO

دستور SELECT … AS

در بخش ها قبلی، از دو دستور PRINT یا SELECT برای نمایش یا چاپ مقداری در Query Editor استفاده می کردیم. یکی از ویژگی های دستور SELECT این است که می تواند خروجی خود را به بخش های مختلف تقسیم کند. Select هر مقدار را در بخشی به نام ستون به نمایش می گذارد و هر ستون دارای یک اسم است که caption یا عنوان آن ستون نامیده می شود. به صورت پیش فرض، caption عبارت "(No column name)" را نشان می دهد. اگر مایلید آن را تغییر دهید، در آن صورت بایستی در سمت راست عبارت کلیدواژه ی AS و پس از آن اسم دلخواه برای آن ستون را مشخص کنید. آیتمی که در سمت راست واژه ی کلیدی AS قرار می گیرد، باید در کل یک کلمه درنظر گرفته شود.


مثال:
SELECT 24.85 AS HourlySalary;

کد بالا نتیجه ی زیر را بدست می دهد:


آموزش SQL

سه روش برای مشخص کردن آیتم پس از کلیدواژه ی AS وجود دارد که در زیر شرح داده شده است:
1. می توانید آیتم مورد نظر را داخل تک کوتیشن قرار دهید:


SELECT 24.85 AS 'HourlySalary';

2. آن آیتم را داخل براکت باز و بسته محصور نمایید، مانند این نمونه:


SELECT 24.85 AS [Hourly Salary];

می توانید هم چندین بخش ایجاد کرده و هریک را توسط ویرگول از هم تفکیک کنید و بعد پس از هر بخش یک کلیدواژه ی AS بکار برده و به دنبال آن اسم یا عنوان ستون مشخص کنید:


SELECT 'James Knight' As FullName, 20.48 AS Salary;

دستور فوق خروجی زیر را تولید می کند:

آموزش SQL

دستور بالا را می توان بدین صورت نیز نوشت:


SELECT 'James Knight' As [Full Name], 20.48 AS [Hourly Salary];

3. یا به عنوان روش آخر، آن را داخل دابل کوتیشن قرار دهید، بدین شکل:


SELECT 24.85 AS "HourlySalary";

عملگرهای یگانی (Unary Operators)

عملگر مثبت "+"

Unary operator عملگری است که عملیات لازم را بر روی تنها یک عملوند (operand) اجرا می کند. جبر ازیک نوع ruler برای طبقه بندی اعداد بهره می گیرد. این ruler دارای یک موقعیت میانی است که همان 0 می باشد. اعدادی که در سمت چپ 0 قرار می گیرند، اعداد مثبت و اعدادی که در سمت چپ 0 قرار می گیرند، همان اعداد منفی هستند:


∞+
6
5
4
3
2
1
1-
2-
3-
4-
5-
6-
∞-

0                                                  
∞+
6
5
4
3
2
1
1-
2-
3-
4-
5-
6-
∞-

مقداری که در سمت راست 0 قرار می گیرد، همان طور که گفته شد، مثبت قلمداد می شود. برای اینکه نشان دهیم عددی مثبت است، کافی است عملگر + را در سمت چپ عدد مورد نظر بکار ببرید.


مثال:
+4, +228, +90335

در این مثال، علامت + یک عملگر یگانی تلقی می شود، زیرا بر تنها یک عملوند تاثیر می گذارد.
عملگر + فقط و فقط باید در سمت چپ یک عملوند درج گردد.
بر اساس قوانین و قردادهای علم ریاضی، یک عدد مثبت نیازی به علامت + ندارد و می توان بدون عملگر نام برده عدد مثبت را نشان داد. از این رو می توان مثال بالا را بدین ترتیب نیز نوشت: 4, 228, 90335. از آن جایی که مقدار بدون هیچ گونه علامتی نشان داده شده، از آن به عنوان unsigned یا بی علامت یاد می شود.
برای چاپ عدد با یا بدون علامت مثبت، کافی است آن را تایپ کنید. در زیر نمونه ای از آن را مشاهده می کنید:


PRINT +1250

عملگر منفی "-"

برای نمایش عددی که در سمت چپ 0 قرار می گیرد، می بایست عملگر "-" را در سمت چپ عدد یا مقدار مورد نظر درج نمود.


مثال:

12-, 448-, 32706-. مقداری که "-" در سمت چپ آن درج می شود، منفی تلقی می گردد.
عملگر "-" باید حتما در سمت چپ مقداری که آن را منفی می کند، درج گردد.
به یاد داشته باشید که اگر عددی بی علامت باشد، به صورت پیش فرض مثبت قلمداد می شود. از این رو چنانچه عددی منفی باشد، باید با علامت "-" نمایش داده شود.
در اینجا مثالی را مشاهده می کنید که در آن دو متغیر شرکت دارند. یکی دارای مقدار مثبت و دیگری مقداری منفی دارد.


عملگرهای دوتایی (Binary Operators)

عمل جمع "+"

عملگری که بر دو عملوند تاثیر می گذارد یا به عبارتی بر روی دو مقدار عملیات انجام می دهد، عملگر دوتایی/ Binary Operator نامیده می شود.


آموزش SQL

Addition یا sum یک عمل است که در آن مقداری را با مقدار دیگری جمع می کنیم. این عملیات به عملگر + نیاز دارد. برای بدست آوردن حاصل جمع دو عدد، عملگر + را بین دو عملوند قرار می دهیم. پس از اینکه عملیات جمع انجام شد، یک مقدار جدید به عنوان خروجی دریافت می کنید که می توانید آن را برای کاربر نمایش داده یا برگردانید. عملیات جمع قاعدتا بر روی دو مقدار اجرا می شود، مانند مثال زیر:


PRINT 125 + 4088

در Transact-SQL می توان بر روی متن نیز عملیات جمع انجام داد (دو مقدار متنی را به یکدیگر متصل کرد):


PRINT N'Henry ' + 'Kono'

می توان بجای دو عدد، چندین عدد یا مقدار را با یکدیگر جمع بست، a + b + c. ترتیب جمع مقدارها چندان اهمیتی ندارد، بدین معنی که Value1 + Value2 و Value2 + Value1 هیچ فرقی بایکدیگر ندارند.


عمل تفریق "-"

عمل subtraction که در انگلیسی difference نیز به آن می گویند، یک مقداری را از مقدار دیگری کسر می کند. در اصل این عمل مقابل عمل جمع قرار می گیرد. عمل تفریق با علامت "-" انجام می شود.


مثال:
PRINT 1240 - 608

بر خلاف عمل جمع، عمل تفریق شرکت پذیر یا انجمنی نیست، بدین معنی که a - b - c لزوما با c - b - a برابر نیست و نتیجه ی یکسانی را به دنبال ندارد.


مثال:
PRINT 128 - 42 - 5
PRINT 5 - 42 - 128

نتیجه ی زیر را بدست می دهد:

81
165

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


عمل ضرب (multiplication)

این عمل به شما امکان می دهد یک عدد را به تعداد دفعات مشخص به خودش اضافه کنید که توسط مقدار دوم تعیین می شود. در واقع به چند بار جمع کردن یک عدد با خودش ضرب می‌گویند. به عنوان مثال، بجای اضافه کردن یک عدد به خودش بدین صورت a + a + a + a، می توان تعداد دفعاتی که آن عدد به خودش اضافه می شود را دریافته، سپس آن عدد را به تعداد دفعات تکرار جمع، که در این مثال 4 می باشد، ضرب کرد. پس معنی توضیحات فوق این است که ما متغیر a را چهار بار به خودش اضافه می کنیم، نتیجه هر دو عملیات یکسان می باشد.
عمل ضرب در زبان های برنامه نویسی با علامت * انجام می شود. مشابه عمل جمع، عمل ضرب شرکت پذیر می باشد، بدین معنی که a * b * c با c * b * aهیچ فرقی ندارد:


PRINT 128 * 42

نتیجه ی زیر را بدست می دهد:


5376

عمل تقسیم (division)

عمل تقسیم درست مشابه بخش بخش کردن یک آیتم به تکه های کوچک تر مقدار ثابت است؛ به عبارتی دیگر تقسیم یا بخش درواقع وارونه ی عمل ضرب می باشد. از این رو، تقسیم برای بدست آوردن کسری از عدد بکار می رود. این عمل با عملگر " / " انجام می شود.


مثال:
PRINT 128 / 42

نتیجه ی زیر را بدست می دهد:

3

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

عملیات Modulo (باقی مانده)

عملیاتی است که باقی‌مانده ی تقسیم یک عدد بر روی دیگری را بدست می آورد در اصطلاح Modulo خوانده می شود. نتیجه ی تقسیم بالا، 128/42، باقی مانده ی 3 می باشد. زمانی که 42 را بر 3 ضرب می کنید، 42*3، نتیجه ی 126 حاصل می گردد. همان طور که در دو خط بالاتر شرح داده شد، عمل modulo باقی مانده ی تقسیم دو عدد را برمی گرداند و با علامت % انجام می شود.


مثال:
PRINT 128 % 42

تفکیک آیتم های مختلف به وسیله ی پرانتز

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


مثال:
PRINT (154 - 12) + 8
PRINT 154 - (12 + 8)

نتیجه ی زیر را بدست می دهد:


150
134

همان طور که از مثال بالا پیدا است، پرانتز ترتیب و اولویت اجرای عملیات را کنترل می کند. این کاراکتر کارایی خود را هر چه بیشتر در عملیاتی که چندین عملگر و عملوند را شامل می شود، واضح تر نشان می دهد. در زیر مثالی دیگر از دستورات تودرتو SELECT را می بینید که از پرانتز استفاده می کند:


SELECT 
    (SELECT 448.25 * 3) + 
    (SELECT 82.28 - 36.04);
GO

مدیریت و دستکاری بیت ها (Bit Manipulations)

مقداری که در پایگاه داده یا برنامه ی خود بکار می برید، قاعدتا بایستی در بخشی از حافظه ی رایانه ذخیره گردد. این مقدار درواقع درون فضایی که از نظر ظاهر شبیه به جعبه ی کوچک است نگهداری می شود. می دانیم که B، اگرچه فقط یک حرف است در 7 خانه ی خالی داخل حافظه ذخیره می گردد و درک این مسئله برای ما انسان ها کمی دشوار است. Bit manipulation یا دستکاری بیت ها درواقع عملیاتی است که به شما امکان می دهند نحوه ی ذخیره شدن مقادیر در بیت ها را مدیریت کنید. گفتنی است که این دست عملیات معمولا کاربرد چندانی، به خصوص در مراحل اولیه ی ایجاد پایگاه داده، ندارند. با این حال، عملیاتی که بر روی بیت های حافظه صورت می گیرد (و همچنین عملگرهای overload شده ی مربوطه) در تمامی یا بیشتر محیط های برنامه نویسی کاربرد دارند و به همین خاطر لازم است با ماهیت و قابلیت های آن ها آشنایی پیدا کنید (یک عملیات بیتی، به انجام عملیات مختلف بر روی تک تک بیت‌های یک عدد باینری یا هر الگوی بیتی دیگری گفته می‌شود. این کار به منظور محاسبه و مقایسه مقادیر مختلف انجام می‌شود و یک عملیات سریع و کارآمد می باشد و مستقیما توسط پردازنده مورد پشتیبانی قرار می گیرد).


عملگرهای بیتی: عملگر بیتی~ NOT

نفی بیتی یا مکمل، یک عملگر یگانی است که هر بیت را به صورت منطقی نقیض می‌کند و به این ترتیب مکمل یک آن مقدار بدست می‌آید. بیت‌هایی که 0 هستند تبدیل به 1 و بیت‌هایی که 1 هستند تبدیل به 0 می‌شوند.
یکی از عملیاتی که می توانید بر روی یک بیت انجام دهید، معکوس کردن مقدار آن است. به عبارتی دیگر، اگر بیتی مقدار 1 را درخود ذخیره داشته باشد، می توان آن را به 0 تبدیل نمود و بالعکس. این عملیات را می توان با عملگر بیتی یگانی NOT ترتیب داد که با علامت ~ نمایش داده می شود. مکمل بیتی یک مقدار، با یکی کمتر از مکمل دو آن عدد برابر است.
همان طور که در بالا نیز به آن اشاره شد، عملگر NOT یک عملگر یگانی است باید در سمت چپ عملوند خود قرار داده شود:


~Value

مثال:
PRINT ~158

برای اجرای این عملیات، مفسر Transact-SQL هر بیتی که بخشی از عملوند محسوب می شود را درنظرگرفته و بسته به مقداری که آن بیت نگه می دارد مقدار هر بیت را از 1 به 0 یا از 0 به 1 تبدیل می کند. این عملیات در جدول زیر قابل مشاهده می باشد:


Bit~
Bit
0
1
1
0

یک عدد را درنظر بگیرید که دارای مقدار بایتی 248 می باشد. در مطالعه ی سیستم های عددی، مشخص می کنیم که چگونه می توان اعداد را از یک سیستم به سیستم دیگر تبدیل کرد. بر این اساس، معادل دودویی مقدار 1111 1000در مبنای ده 248 (و مقدار آن در مبنای 16 معادل 0xF8) می باشد. اگر عملگر بیتی NOT را برای معکوس کردن مقادیر بیت های آن، روی عدد مورد نظر اعمال کنید، نتیجه ی زیر بدست می آید:


1
1
1
1
1
0
0
0
Value
0
0
0
0
0
1
1
1
Value~

مقایسه ی بیت ها: عملگر بیتی AND (&)

عملگر & یک عملگر یگانی است که از دستور نحوی زیر استفاده می کند:


Operand1 & Operand2

عملگر بیتی AND، دو مقدار دودویی با طول مساوی را پذیرفته و بر روی هر جفت بیت متناظر و همخوان، عملیات عطف منطقی را اجرا می کند. نتیجه زمانی 1 می ‌شود که اولین بیت و دومین بیت هر دو 1 باشند و در غیر این صورت نتیجه صفر می شود. درواقع این عملگر، بیت های متناظر دو مقدار را باهم مقایسه کرده و چنانچه هر دو بیت متناظر 1باشند، نتیجه 1 می شود و غیر این صورت نتیجه 0 می شود.


Bit1 & Bit2
Bit2
Bit1
0
0
0
0
0
1
0
1
0
1
1
1

فرض بگیرید دو مقدار بایتی دارید که هر یک به ترتیب 187 و 242 می باشد. با توجه قوانین سیستم های عددی، معادل دودویی عدد 187، 1011 1011 (معادل در مبنای 16 آن 0Xbb) می باشد. معادل دودویی عدد 242، مقدار 1111 0010 (و معادل در مبنای 16 آن 0xF2) می باشد. حال مقادیر را بیت به بیت با استفاده از عملگر AND مقایسه می کنیم:


Binary Decimal
N1 1 0 1 1 1 0 1 1 187
N2 1 1 1 1 0 0 1 0 242
N1 & N2 1 0 1 1 0 0 1 0 178

اغلب انتظار داریم که مفسر این عملیات را انجام داده و بعد ما نتیجه ی آن را در برنامه ی خود مورد استفاده قرار دهیم، بدین معنی که می توان نتیجه را از مفسر دریافت کرده و آن را به کاربر نمایش داد. عملیات فوق را می توان به وسیله ی برنامه ی زیر اجرا کرد:


PRINT 187 & 242

نتیجه ی زیر بدست می دهد:


178

مقایسه ی بیت ها: عملگر بیتی OR

عملگر OR بیتی، دو الگوی بیتی با طول یکسان پذیرفته و عملیات فصل منطقی را بر روی بیت‌های متناظر اجرا می کند. نتیجه عملیات تنها در صورتی 1 است که بیت اول یا بیت دوم 1 باشند. در غیر این صورت (یعنی اگر هر دو بیت صفر باشند) نتیجه عملیات نیز صفر می باشد.
نحوه ی نگارش آن بدین شکل است:

Value1 | Value2

این بار نیز بیت های متناظر دو عملوند با یکدیگر مورد مقایسه قرار می گیرند. چنانچه حتی یکی از بیت های متناظر 1 باشد، نتیجه ی عملیات 1 می باشد. مقایسه تنها زمانی 0 تولید می کند که هر دو بیت 0 باشند.


Bit1 | Bit2
Bit2
Bit1
0
0
0
1
0
1
1
1
0
1
1
1

بار دیگر دو عدد 187 و 242 را درنظر بگیرید. مقایسه ی آن دو به وسیله ی عملگر بیتی OR نتیجه ی زیر را ارائه می کند:


Binary Decimal
N1 1 0 1 1 1 0 1 1 187
N2 1 1 1 1 0 0 1 0 242
N1 & N2 1 1 1 1 1 0 1 1 251

می توان این عملیات را به کامپایلر محول کرد:


PRINT 187 | 242PRINT 187 | 242

نتیجه ی زیر را ارائه می کند:


251

مقایسه ی بیت ها: عملگر بیتی XOR

عملگر بیتی، دو الگوی بیتی با طول یکسان دریافت کرده و عملیاتی انحصاری را بر روی بیت‌های متناظر پیاده می کند. نتیجه ی عملیات تنها زمانی 1 می شود که فقط اولین بیت 1 باشد و یا فقط دومین بیت 1 باشد. چنانچه هر دو بیت صفر و یا هر دو 1 باشند، در آن صورت نتیجه ی 0 حاصل می گردد. دستور نحوی آن به صورت می باشد:


Value1 ^ Value2

عملیات بدین نحو انجام می شود که بیت یک مقدار با بیت متناظر مقدار دوم مقایسه می شود، چنانچه یکی از بیت ها 0 باشد و دیگری 1، نتیجه 1 می شود. اما چنانچه هر دو مقداری یکسان داشته باشند (هر دو 1 یا هر دو 0 باشند) در آن صورت، نتیجه صفر می شود:


Bit1 ^ Bit2
Bit2
Bit1
0
0
0
1
0
1
1
1
0
0
1
1

باز هم دو عدد 187 و 242 را درنظر می گیریم. مقایسه ی بیتی آن (با استفاده از عملگر ^) نتیجه ی زیر را بدست می دهد:

Binary Decimal
N1 1 0 1 1 1 0 1 1 187
N2 1 1 1 1 0 0 1 0 242
N1 ^ N2 0 1 0 0 1 0 0 1 73

مفسر نیز می تواند این عملیات را اجرا کرده و نتیجه ی زیر تولید کند:


PRINT 187 ^ 242;

نتیجه:


73
  • 5574
  •    1546
  • تاریخ ارسال :   1394/11/04

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .