"

عملگر IN در SQL

تیم تحریریه 1403/12/11 0 255
لینک کوتاه https://zoheirsoftware.com/z/04eb39d13 |
عملگر IN در SQL,ساختار عمومی عملگر IN,نکات و محدودیت‌های عملگر IN

عملگر IN در  پایگاه داده SQL

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

این عملگر معمولاً در بخش WHERE یک کوئری به کار می‌رود و جایگزینی خواناتر و بهینه‌تر برای چندین شرط OR است.

IN می‌تواند با یک لیست ثابت از مقادیر یا یک زیردستور (subquery) که مجموعه‌ای از داده‌ها را برمی‌گرداند، استفاده شود.

به عنوان مثال، دستور زیر تمام کاربرانی را انتخاب می‌کند که UserID آن‌ها برابر با یکی از مقادیر مشخص‌شده باشد:

 

SELECT * FROM Users WHERE UserID IN (101, 102, 103);

یکی از کاربردهای رایج IN استفاده از آن همراه با زیردستور برای فیلتر کردن داده‌ها بر اساس نتایج یک کوئری دیگر است.

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

به عنوان مثال، برای نمایش تمام مشتریانی که سفارشی ثبت کرده‌اند، می‌توان از کوئری زیر استفاده کرد:

 

SELECT * FROM Customers  
WHERE CustomerID IN (SELECT CustomerID FROM Orders);


در این مثال، ابتدا زیردستور فهرست CustomerIDهای جدول Orders را استخراج می‌کند و سپس این مقادیر برای فیلتر کردن مشتریان در جدول Customers استفاده می‌شوند.

 

 

عملگر IN در  پایگاه داده SQL

 

ساختار عمومی عملگر IN

ساختار عمومی عملگر IN به صورت زیر است:

 

SELECT column1, column2, ...

FROM table_name

WHERE column_name IN (value1, value2, ..., valueN);

در اینجا، column_name نام ستونی است که می‌خواهید مقادیر آن را بررسی کنید و (value1, value2, ..., valueN) مجموعه‌ای از مقادیر است که می‌خواهید با آن مقایسه کنید.

 

 

مزایای عملگر IN در پایگاه داده SQL

  • کاهش پیچیدگی

    جایگزین خواناتر و ساده‌تر برای چندین شرط OR است.
  • بهینه‌تر در عملکرد

    در برخی موارد سریع‌تر از استفاده از چندین OR عمل می‌کند.
  • قابل استفاده با زیردستورها

    امکان بررسی مقادیر موجود در نتایج یک subquery را فراهم می‌کند.
  • افزایش خوانایی کد

    کوئری‌ها را خلاصه‌تر و قابل فهم‌تر می‌کند.

مزایای عملگر IN در پایگاه داده SQL

 

مثال ساده از استفاده از IN

فرض کنید شما یک پایگاه داده با جدول employees دارید که شامل اطلاعات کارکنان یک شرکت است.

هر رکورد در این جدول شامل فیلدهایی مانند employee_id, first_name, last_name و department_id است.

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

 

SELECT first_name, last_name, department_id

FROM employees

WHERE department_id IN (1, 3, 5);

در اینجا، با استفاده از عملگر IN، ما تمام کارکنانی که در دپارتمان‌های با شناسه‌های ۱، ۳ یا ۵ کار می‌کنند را جستجو کرده‌ایم.

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

 

 

 

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

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

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

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

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

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

 

 

استفاده از IN با زیرپرس و مقادیر محاسباتی

عملگر IN نه تنها می‌تواند با مقادیر ثابت استفاده شود، بلکه می‌تواند با نتایج یک زیرپرسش (subquery) نیز ترکیب شود.

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

فرض کنید شما می‌خواهید لیست کارکنانی را دریافت کنید که در دپارتمان‌هایی کار می‌کنند که بیش از ۱۰ نفر پرسنل دارند.

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

 

SELECT first_name, last_name, department_id

FROM employees

WHERE department_id IN (SELECT department_id

                         FROM employees

                         GROUP BY department_id

                         HAVING COUNT(*) > 10);

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

 

استفاده از IN برای فیلتر کردن تاریخ‌ها و داده‌های دیگر

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

به‌عنوان مثال، اگر بخواهید رکوردهایی را پیدا کنید که تاریخ آنها در بازه‌ای خاص قرار دارد، می‌توانید از عملگر IN به شکل زیر استفاده کنید:

 

SELECT order_id, order_date, total_amount

FROM orders

WHERE order_date IN ('2025-01-01', '2025-02-01', '2025-03-01');

در این مثال، تنها سفارش‌هایی که تاریخ آن‌ها یکی از تاریخ‌های مشخص‌شده است، بازیابی می‌شوند.

نکات و محدودیت‌های عملگر IN

در حالی که عملگر IN بسیار مفید است، باید به چند نکته توجه داشته باشید:

  • کاهش کارایی پایگاه داده 

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

    عملگر IN هنگام مقایسه با NULL رفتار خاصی دارد.
    برای بررسی مقدار NULL در SQL، از عملگر IS NULL باید استفاده کنید.

برای مثال:

 

SELECT first_name, last_name

FROM employees

WHERE department_id IN (NULL, 3, 5);

در اینجا، SQL تنها مقادیر معتبر (۳ و ۵) را بررسی می‌کند و NULL را نادیده می‌گیرد.

بنابراین، اگر می‌خواهید رکوردهایی با مقدار NULL را پیدا کنید، باید از IS NULL استفاده کنید.

 

 

نکات و محدودیت‌های عملگر IN

 

مثال پروژه‌محور از عملگر IN در SQL

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

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

سناریو

مدیر فروشگاه می‌خواهد لیست تمام مشتریانی را ببیند که محصولاتی از دسته‌بندی الکترونیک (مثلاً لپ‌تاپ، گوشی، هدفون) خریداری کرده‌اند.

این اطلاعات در سه جدول ذخیره شده است:

  • Customers(CustomerID, Name, Email) → اطلاعات مشتریان

  • Orders(OrderID, CustomerID, OrderDate) → اطلاعات سفارشات

  • OrderDetails(OrderID, ProductID, Quantity) → جزئیات هر سفارش

  • Products(ProductID, Name, Category, Price) → اطلاعات محصولات

کوئری پروژه‌ای با IN

SELECT DISTINCT C.CustomerID, C.Name, C.Email  
FROM Customers C  
JOIN Orders O ON C.CustomerID = O.CustomerID  
JOIN OrderDetails OD ON O.OrderID = OD.OrderID  
WHERE OD.ProductID IN (SELECT ProductID FROM Products WHERE Category = 'Electronics');


تحلیل کد

  • ابتدا CustomerID، Name، Email را از جدول Customers انتخاب می‌کنیم.

  • با JOIN بین Customers و Orders ارتباط بین مشتریان و سفارشات را برقرار می‌کنیم.

  • سپس جدول OrderDetails را به سفارشات متصل می‌کنیم تا بدانیم هر سفارش شامل چه محصولاتی است.

  • در قسمت WHERE از IN استفاده کرده‌ایم تا فقط مشتریانی را انتخاب کنیم که ProductID آن‌ها در لیست محصولات دسته Electronics قرار دارد.

 

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

 

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

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

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

1,600,000 تومان

3.9k بازدید

ارسال دیدگاه

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