دستور IF در SQL – توضیح به زبان ساده با مثال و کد

۱۶۶ بازدید
آخرین به‌روزرسانی: ۱۷ آذر ۱۴۰۳
زمان مطالعه: ۹ دقیقه
دانلود PDF مقاله
دستور IF در SQL – توضیح به زبان ساده با مثال و کددستور IF در SQL – توضیح به زبان ساده با مثال و کد

«زبان کوئری نویسی ساختاریافته» (Structured Query Language) یا همان SQL، یکی از ابزارهای بنیادین برای تعامل با پایگاه‌های داده رابطه‌ای است. با استفاده از SQL می‌توانیم داده‌ها را از درون پایگاه داده فراخوانی، مدیریت و سازماندهی کنیم. با استفاده از دستور IF در SQL بر اساس معیار‌های خاصی تصمیم می‌گیریم که با کوئری‌ها چه‌ کرده و مراحل کار خود را چگونه ادامه دهیم. یعنی اینکه با استفاده از این دستور، کوئری‌های پویایی می‌سازیم که با شرایط مختلف در پیش رو برای داده‌ها، سازگار می‌شوند. با کمک این کوئری‌ها می‌توان قواعد منطقی پیچیده برنامه را به صورت مستقیم در داخل اسکریپت‌های SQL پیاده‌سازی کرد.

997696

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

دستور IF در SQL چیست؟

دستور IF در SQL به برنامه نویسان کمک می‌کند که کدهای خاصی را به شرط برقرار بودن حالت مشخصی، اجرا کنند. این دستورات مانند عبارت CASE در SQL همراه با شرایط «WHEN» کار می‌کنند. در صورتی که بخواهیم از شرایط بیشتری استفاده کنیم می‌توانیم از چند IF پشت سر هم استفاده کرده و در بخش IF عبارت «ELSE» را هم به کوئری خود بیفزاییم. بخش پیش‌فرض «ELSE» برای مواقعی به کار برده می‌شود که هیچکدام از شرط‌های مشخص شده برقرار نباشند. تمام بلوک‌های شرطی IF باید با عبارت «END» به پایان برسند. این عبارت نشان‌دهنده انتهای بلوک IF است.

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

در دستور IF، کوئری SQL عبارت‌های مختلف را ارزیابی می‌کند. اگر در عبارتی شرط مشخص شده برابر با TRUE شود، یعنی اینکه شرط برقرار باشد، کوئری عبارت تعریف شده در آن بلوک IF  را اجرا خواهد کرد. در غیر این صورت، عبارت‌های نوشته شده در بخش ELSE  اجرا خواهند شد.

در کادر زیر کدهای مربوط به سینتکس دستور IF در SQL نمایش داده شده‌اند.

روند مراحل کاری دستور IF  را در فهرست زیر به صورت قدم‌به‌قدم نوشته‌ایم.

  • هر شرطی که در دستور IF  نوشته شده باید مقداری از نوع Boolean برگرداند.
  • برای مثال، به عنوان عبارت Boolean می‌توانیم از دستور Select در SQL استفاده کنیم. اما تمام عبارت Select  و محتویاتش باید درون دو علامت پرانتز باز و بسته محصور شوند.
  • در عبارت‌های IF  می‌توان از BEGIN  و END  برای مشخص کردن حریم بلوک شرطی نیز استفاده کرد.

استفاده از شرط ELSE  اختیاری است.

در بخش‌های بعدی مطلب به بررسی دستور IF در SQL با استفاده از مثال‌های کدنویسی شده‌ پرداخته‌ایم.

آموزش قدم به قدم SQL Server با فرادرس

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

مجموعه آموزش اس کیو ال سرور – مقدماتی تا پیشرفته
در صورت تمایل بر روی تصویر بالا کلیک کرده و به صفحه اصلی این مجموعه آموزشی هدایت شوید.

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

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

مثال‌ های استفاده از دستور IF در SQL

در این بخش از مطلب، انواع تکنیک‌های پیاده‌سازی و استفاده از ساختار شرطی دستور IF را در رایج‌ترین سناریو‌های ممکن همراه با مثال‌های کدنویسی شده نشان داده‌ایم.

یکی از مهمترین نکات مربوط به استفاده از این دستور، به‌کارگیری و توجه به ساختار بلوک BEGIN و END است که این بلوک را نیز در مثال‌های آخر مورد بررسی قرار داده‌ایم.

مثال اول: استفاده از مقدار عددی در عبارت Boolean

در مثال زیر، مقدار عددی را در عبارت Boolean مشخص کرده‌ایم. این مقدار همیشه برابر با TRUE است. از آنجا که شرط نوشته شده در کد زیر، همیشه برقرار است - IF(1 = 1) - عبارت مربوط به دستور IF  در خروجی چاپ خواهد شد.

همین‌طور که در تصویر زیر می‌بینیم، بعد از اجرای کوئری بالا، خروجی مورد نظر تولید شده و در کنسول پایگاه داده چاپ می‌شود.

برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید.

اگر شرط درون عبارت Boolean را تغییر دهیم به نوعی که برابر با FALSE شود، کوئری زیر، عبارت داخل بلوک ELSE  را چاپ خواهد کرد.

همین‌طور که در تصویر زیر می‌بینید، بعد از اجرای کوئری بالا، عبارت زیر بلوک ELSE انتخاب شده و در کنسول پایگاه داده چاپ می‌شود.

بررسی دستور IF در SQL وقتی که شرط برقرار نیست.

مثال دوم: دستور IF همراه با متغیری داخل عبارت Boolean

در مثال این بخش، از متغیری در داخل عبارت Boolean استفاده کرده‌‌ایم. در نتیجه عبارت‌های SQL بر اساس برقرار بودن یا نبودن شرط مورد نظر اجرا خواهند شد.

برای مثال، اگر دانش‌آموزی بیش از ۸۰٪ نمره مورد نیاز در امتحان را کسب کند، قبول شده و در غیر این صورت در آزمون رد خواهد شد. کوئری مربوط به این شرط را در کادر زیر پیاده‌سازی کرده‌ایم.

بعد از اجرای کوئری بالا، همین‌طور که در تصویر زیر نشان داده‌ایم، خروجی مورد نظر تولید شده و در کنسول پایگاه داده، چاپ می‌شود.

بررسی دستور IF در SQL هم راه با استفاده از متغیر

مثال سوم: چندین عبارت IF همراه با متغیری داخل عبارت Boolean

در زمان نوشتن بلوک شرطی IF در SQL می‌توانیم از چندین عبارت IF  پشت سر هم استفاده کنیم. SQL به ترتیب نوشته شدن دستورها عبارت هر کدام ارزیابی شده و نتیجه نیز اجرا می‌شود. برای مثال به کدهای نوشته شده در کادر زیر توجه کنید.

  • در این مثال، اگر دانش‌آموزی بیش از ۹۰٪ نمره امتحان را کسب کند، کوئری باید پیغام نوشته شده در بلوک اول IF  را در خروجی چاپ کند.
  • اگر دانش‌آموزی بیش از ۸۰٪ نمره آزمون را کسب کرده بود، کوئری زیر، پیغام قرار گرفته در عبارت IF  دوم را نمایش می‌دهد.
  • و در صورت کسب نمره‌ای به غیر از شرایط بالا، کوئری زیر باید پیغام تعبیه شده در بلوک ELSE  را چاپ کند.

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

بررسی دستور IF در SQL با استفاده از دو شرط مجزا

اما مسئله اینجاست که نمی‌خواهیم کوئری نوشته شده برای بررسی عبارت شرطی، همزمان بلوک‌های دو دستور IF  مجزا از هم را اجرا کند. بنابراین باید شرط‌های خود را به شکل درست و با عبارت‌های مناسبی تعریف کنیم.

یکی از راه‌های بسیار خوب برای مدیریت عبارت‌های شرطی در SQL ترکیب آن‌ها با عبارت‌هایی مانند دستور Like و دستور Where است. این دستورها جزو دستورات مربوط به فیلتر کردن داده‌ها هستند. به منظور آشنایی با این دستورات می‌توانید مطلب‌های دستور Where در SQL، از کاربرد تا نحوه استفاده به زبان ساده و دستور Like در SQL، از کاربرد تا نحوه استفاده به زبان ساده را در مجله فرادرس مطالعه کنید.

در تصویر نمایش داده شده پایین می‌توان دید که نتیجه شرط IF  دوم برابر با TRUE است. اگر نمره دانش‌آموز بزرگتر یا مساوی 80% بیشینه قابل کسب در امتحان شود یا از 90%  این نمره کمتر باشد، این شرط مقدار TRUE برگردانده و عبارت مشخص شده را نمایش می‌دهد.

در خروجی این کوئری موارد فهرست شده زیر مشاهده می‌‌شوند.

  • عبارت شرطی IF  اول برقرار و پاسخ برابر با TRUE است. در نتیجه پیغام تعبیه شده در این بلوک شرطی، روی خروجی SQL چاپ می‌‌شود.
  • عبارت شرطی IF  دوم برقرار نیست و پاسخ FALSE است. پس پیغام تعریف شده در این بلوک شرطی در خروجی چاپ نخواهد شد.
  • کوئری بالا در آخر عبارت ELSE  را اجرا کرده و پیغام تعریف شده در این بلوک را چاپ می‌کند. در این مورد خاص از دو دستور IF در SQL استفاده کرده‌ایم. عبارت IF  دوم برابر با FALSE ارزیابی شده است. بنابراین بلوک ELSE  متناظر با آن عبارت به شکل اجباری اجرا می‌شود.
برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید.

برای تعریف کردن چند دستور IF  پشت سر هم باید بسیار با دقت عمل کرد. زیرا ممکن است در صورت استفاده غیر درست از دستور IF در SQL با نتیجه غیر منتظره‌ای - مانند مورد بالا - روبه‌رو شویم.

مثال چهارم: دستور IF در SQL بدون عبارت ELSE

در بخش‌های بالایی مطلب و به‌خصوص بخش سینتکس، بیان کردیم که استفاده از عبارت ELSE  در کوئری‌های شرطی اختیاری است. در نتیجه می‌توانیم از دستور IF در SQL بدون بخش ELSE  نیز استفاده کنیم. در این قسمت می‌خواهیم با کمک مثال ساده‌‌ای این روش را نیز نشان دهیم.

برای مثال در کد زیر، مقدار عبارت تعریف شده برابر با TRUE ارزیابی می‌‌شود. بنابراین باید پیغام مربوط به این بلوک در خروجی چاپ شود.

بعد از اجرای کوئری بالا، همین‌طور که در تصویر زیر نشان داده شده، خروجی مورد نظر تولید شده و در کنسول پایگاه داده چاپ می‌شود.

بررسی دستور IF در SQL با استفاده از تعریف متغیر

اگر نتیجه عبارت مورد نظر، FALSE ارزیابی شود، توسط بلوک شرطی، هیچ خروجی در این کوئری چاپ نمی‌شود. برای مدیریت این شرایط، لازم است که از عبارت ELSE  استفاده کنیم. در چنین موقعیتی که شرط نوشته شده به نتیجه TRUE نمی‌رسد، می‌توانیم پیغام یا رفتار خاصی را به عنوان پیش‌فرض تعریف کرده و در خروجی نمایش دهیم.

بررسی دستور IF در SQL وقتی که شرط برقرار نیست و عبارت Else تعریف نشده است.

مثال پنجم: استفاده از عبارت IF برای اجرای اسکریپت‌ های SQL

در مثال‌های قبلی، با توجه به اینکه شرط‌ها برقرار می‌شدند یا نه، پیغامی را در خروجی چاپ می‌کردیم. اما با توجه به نتیجه شرط، شاید بخواهیم که اسکریپت خاصی را اجرا کنیم.

در مثال زیر، اگر مقدار فروش بیش از 100000000 واحد پولی باشد، با استفاده از دستور Select  در SQL، باید رکورد‌هایی را از جدول SalesOrderDtails انتخاب کرده و در خروجی نمایش داد.

اما اگر مقدار فروش کمتر از 100000000 واحد پولی بود، باید رکورد‌های را از جدول SalesOrderHeader  برای نمایش در خروجی، انتخاب کنیم.

مثال ششم: دستور IF همراه با مشخص کننده های بلوک BEGIN و END

در دستور IF  می‌توانیم از عبارت‌های مشخص کننده حریم بلوک BEGIN  و END  استفاده کنیم. وقتی که شرطی برقرار بود، SQL کد تعریف شده درون بلوک BEGIN  و END  را اجرا می‌کند.

در تصویر زیر می‌بینیم که بعد از اجرای کوئری بالا، خروجی مورد نظر تولید شده و در کنسول پایگاه داده چاپ می‌شود.

استفاده از بلوک BEGIN و END در دستور IF در SQL

همراه با دستور IF  می‌توان چندین عبارت مختلف را برای اجرا شدن در بلوک‌های BEGIN  و END  مشخص کرد. در کوئری نوشته شده زیر، وقتی که شرط مشخص شده برآورده شد، می‌خواهیم پیغامی را از دو عبارت PRINT  جداگانه چاپ کنیم.

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

همین‌طور که در تصویر زیر می‌بینیم، بعد از اجرای کوئری بالا، خروجی مورد نظر تولید شده و در کنسول پایگاه داده چاپ می‌شود.

استفاده از بلوک BEGIN و END در دستور IF در SQL

آموزش کار با انواع پایگاه های داده

نرم‌افزارهای پایگاه داده متنوعی با استفاده از زبان SQL به ذخیره‌سازی و مدیریت داده‌ها می‌پردازند. به عنوان مثال می‌توان به برنامه‌هایی مانند MySQL و SQLite و PostgreSQL اشاره کرد. برای آموزش کار با پایگاه‌های داده‌ی رابطه‌ای و زبان SQL، فیلم‌ها و مطالب خوبی در فرادرس تهیه شده‌اند. فرادرس، درباره کار با انواع پایگاه‌های داده فیلم‌های آموزشی خوبی را از سطوح ابتدایی تا حرفه‌ای تهیه کرده است. تمام این فیلم‌ها با هدف آماده‌سازی کاربر به منظور ورود به بازار کار، طراحی و منتشر شده‌اند. در بخش زیر، چند مورد از فیلم‌های آموزشی را فهرست کرده‌ایم.

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

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

جمع‌بندی

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

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
simplilearnSQLShackIBM
دانلود PDF مقاله
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *