دستورات شرطی در SQL

تیم تحریریه 1403/12/24 0 75
لینک کوتاه https://zoheirsoftware.com/z/de2abb7fa |
دستورات شرطی در SQL,ساختار دستور IF در SQL,دستور IF ELSE در SQL

دستورات شرطی در SQL

دستورات شرطی IF و IF ELSE در SQL برای کنترل جریان اجرای دستورات بر اساس شرایط مختلف استفاده می‌شوند.

دستور IF زمانی کاربرد دارد که بخواهید یک یا چند دستور را تنها در صورت برقرار بودن یک شرط خاص اجرا کنید.

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

این دستور در پروسیجرها و توابع ذخیره‌شده معمولاً استفاده می‌شود و به شما امکان می‌دهد منطق‌هایی مانند بررسی مقادیر یا تصمیم‌گیری‌ها را پیاده‌سازی کنید.

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

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

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

این ویژگی باعث انعطاف‌پذیری بیشتر در برنامه‌نویسی SQL و ایجاد منطق‌های پیچیده‌تر می‌شود.

 

 

دستورات شرطی در SQL

 

 

ساختار دستور IF در SQL

ساختار عمومی دستور IF به شکل زیر است:

IF شرط

BEGIN

    -- دستورات SQL که در صورتی که شرط درست باشد اجرا می‌شوند

END

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

 

دستور IF ELSE در SQL

دستور IF ELSE در SQL به شما این امکان را می‌دهد که دو مسیر مختلف را برای اجرا انتخاب کنید:

  • یکی برای زمانی که شرط درست باشد

  • برای زمانی که شرط اشتباه باشد.

ساختار عمومی دستور IF ELSE به شکل زیر است:

IF شرط

BEGIN

    -- دستورات SQL برای شرایط درست

END

ELSE

BEGIN

    -- دستورات SQL برای شرایط اشتباه

END

در اینجا، اگر شرط درست باشد، دستورات داخل بلوک BEGIN اول اجرا می‌شوند و اگر شرط اشتباه باشد، دستورات داخل بلوک BEGIN دوم (که بعد از ELSE آمده است) اجرا خواهند شد.

 

 

.🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!

 

 

 

 

دستور IF ELSE در SQL

 

 

مثال‌های عملی از دستور IF و IF ELSE

مثال 1: استفاده از دستور IF در SQL

فرض کنید یک جدول به نام employees داریم که اطلاعات کارکنان را ذخیره می‌کند و می‌خواهیم بررسی کنیم که آیا حقوق یک کارمند بیشتر از 5000 است یا خیر.

DECLARE @salary INT;

SET @salary = 6000;




IF @salary > 5000

BEGIN

    PRINT 'حقوق بیشتر از 5000 است';

END

 

در این مثال، اگر متغیر @salary بیشتر از 5000 باشد، پیام "حقوق بیشتر از 5000 است" چاپ خواهد شد.

مثال 2: استفاده از دستور IF ELSE در SQL

در این مثال، می‌خواهیم حقوق یک کارمند را بررسی کنیم و بسته به اینکه حقوق بیشتر از 5000 است یا خیر، یک پیام مناسب را چاپ کنیم.

 

DECLARE @salary INT;

SET @salary = 4000;




IF @salary > 5000

BEGIN

    PRINT 'حقوق بیشتر از 5000 است';

END

ELSE

BEGIN

    PRINT 'حقوق کمتر از 5000 است';

END

در اینجا، چون حقوق کارمند کمتر از 5000 است، پیام "حقوق کمتر از 5000 است" چاپ خواهد شد.

 

کاربرد دستور IF در ذخیره‌سازی مقادیر

دستورات شرطی می‌توانند در SQL برای محاسبه یا ذخیره‌سازی مقادیر مختلف استفاده شوند.

مثلاً اگر بخواهیم یک مقدار را فقط در صورتی که مقدار دیگری بیشتر از یک مقدار خاص است ذخیره کنیم، می‌توانیم از دستور IF استفاده کنیم.

 

DECLARE @value INT;

SET @value = 100;




IF @value > 50

BEGIN

    INSERT INTO my_table (column_name) VALUES (@value);

END

در این مثال، فقط اگر مقدار @value بیشتر از 50 باشد، آن را در جدول my_table وارد خواهیم کرد.

 

ترکیب دستور IF با سایر دستورات SQL

دستور IF می‌تواند با دستورات دیگر SQL مانند SELECT، UPDATE، و DELETE ترکیب شود تا از آن‌ها در مواقع خاص استفاده شود.

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

 

DECLARE @age INT;

SET @age = 30;




IF @age > 18

BEGIN

    UPDATE users SET status = 'adult' WHERE user_id = 1;

END

 

در این مثال، اگر متغیر age@ بیشتر از 18 باشد، وضعیت کاربر با user_id برابر با 1 به "adult" تغییر خواهد کرد.

 

استفاده از دستور IF در توابع و پروسیجرها

دستور IF می‌تواند در توابع (functions) و پروسیجرها (stored procedures) برای کنترل جریان اجرایی و تصمیم‌گیری در اجرای دستورات مختلف استفاده شود.

CREATE PROCEDURE CheckSalary

    @salary INT

AS

BEGIN

    IF @salary > 5000

    BEGIN

        PRINT 'حقوق زیاد است';

    END

    ELSE

    BEGIN

        PRINT 'حقوق کم است';

    END

END

 

در این مثال، یک پروسیجر به نام CheckSalary تعریف شده که حقوق یک کارمند را بررسی کرده و پیام مناسبی را چاپ می‌کند.

 

دستور IF در SQL Server و MySQL

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

به طور کلی، دستور IF در SQL Server بیشتر در داخل پروسیجرها یا توابع استفاده می‌شود، در حالی که در MySQL بیشتر در داخل دستورات معمولی SQL مورد استفاده قرار می‌گیرد.

 

نکات مهم در استفاده از دستور IF در SQL

  • دقت در استفاده از پارامترهای ورودی

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

    استفاده زیاد از دستورات شرطی در کوئری‌ها ممکن است باعث کاهش کارایی شود، به ویژه زمانی که با حجم زیاد داده‌ها سروکار دارید.
  • خوانایی کد

    برای افزایش خوانایی و فهم بهتر کد، از تو رفتگی مناسب و نوشتن کامنت‌ها برای توضیح شرایط مختلف استفاده کنید.

 

 

نکات مهم در استفاده از دستور IF در SQL

 

مثال پروژه محور  از دستورات شرطی در SQL

در این مثال پروژه‌محور، یک سیستم مدیریت موجودی کالا (Inventory Management) را طراحی می‌کنیم که از دستورات شرطی IF و IF ELSE برای بررسی و به‌روزرسانی موجودی کالاها استفاده می‌کند.

فرض کنید یک جدول products داریم که اطلاعات محصولات را ذخیره می‌کند.

 

ساخت جدول products

ابتدا جدول products را ایجاد می‌کنیم که شامل شناسه کالا، نام کالا، قیمت و موجودی است.

 

CREATE TABLE products (

    product_id INT PRIMARY KEY,

    product_name VARCHAR(100),

    price DECIMAL(10, 2),

    stock_quantity INT

);

اضافه کردن داده‌ها به جدول

سپس داده‌های نمونه‌ای به جدول products وارد می‌کنیم.

INSERT INTO products (product_id, product_name, price, stock_quantity)

VALUES

(1, 'Laptop', 1000.00, 5),

(2, 'Smartphone', 500.00, 10),

(3, 'Headphones', 100.00, 0);

 

ایجاد یک پروسیجر برای بررسی و به‌روزرسانی موجودی کالا

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


CREATE PROCEDURE update_stock(

    IN p_product_id INT,

    IN p_quantity INT

)

BEGIN

    DECLARE current_stock INT;

   

    -- گرفتن موجودی فعلی کالا

    SELECT stock_quantity INTO current_stock

    FROM products

    WHERE product_id = p_product_id;




    -- بررسی موجودی و به‌روزرسانی

    IF current_stock >= p_quantity THEN

        UPDATE products

        SET stock_quantity = stock_quantity - p_quantity

        WHERE product_id = p_product_id;

        PRINT 'موجودی با موفقیت به‌روز شد';

    ELSE

        PRINT 'موجودی کافی نیست';

    END IF;

END;

توضیح پروسیجر

در این پروسیجر، ابتدا موجودی کالا از جدول products خوانده می‌شود.

سپس با استفاده از دستور IF, بررسی می‌شود که آیا موجودی کالا به اندازه درخواست شده است یا خیر.

اگر موجودی کافی باشد، موجودی کالا کاهش می‌یابد، در غیر این صورت پیام "موجودی کافی نیست" نمایش داده می‌شود.

 

استفاده از پروسیجر

حالا که پروسیجر را ایجاد کرده‌ایم، می‌توانیم آن را برای به‌روزرسانی موجودی کالا فراخوانی کنیم.

 

مثال 1: موجودی کافی است

CALL update_stock(1, 3);

در این مثال، چون موجودی لپ‌تاپ 5 عدد است و درخواست 3 عدد است، موجودی با موفقیت به‌روز می‌شود.

 

مثال 2: موجودی کافی نیست

CALL update_stock(3, 1);

در این مثال، چون موجودی هدفون‌ها صفر است، پیام "موجودی کافی نیست" نمایش داده می‌شود.

 

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .

997,000 تومان

2.6k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.