فیلتر دادهها در SQL: راهنمای جامع استفاده از شرط WHERE
در پایگاههای داده SQL، عبارت `WHERE` برای فیلتر کردن رکوردها و بازیابی تنها آنهایی که یک شرط مشخص را برآورده میکنند، استفاده میشود. این عبارت در کوئریهای `SELECT`, `UPDATE`, `DELETE` و `MERGE` به کار میرود تا دقت عملیات بر روی دادهها را تضمین کند. استفاده از `WHERE` به شما امکان میدهد تا زیرمجموعهای دقیق از دادهها را بر اساس معیارهای دلخواه خود انتخاب کنید.
نمونهای از یک کوئری پایه SELECT با استفاده از عبارت WHERE:
SELECT ستون1, ستون2
FROM نام_جدول
WHERE شرط;
در این ساختار، ستون1, ستون2 ستونهایی هستند که میخواهید بازیابی کنید، نام_جدول جدولی است که دادهها از آن انتخاب میشوند و شرط عبارتی منطقی است که رکوردهای مورد نظر را فیلتر میکند.
اپراتورهای عبارت WHERE در SQL
اپراتورها عناصر اساسی برای ساختن شرطها در عبارت `WHERE` هستند. آنها به شما اجازه میدهند تا مقادیر را مقایسه کنید و عبارات منطقی را ایجاد نمایید. در ادامه به معرفی و بررسی مهمترین اپراتورها میپردازیم.
اپراتور مساوی (Equality Operator)
اپراتور مساوی `(=)` برای مقایسه دو مقدار و بررسی اینکه آیا آنها برابر هستند یا خیر، استفاده میشود.
مثال:
SELECT ProductID, ProductName, Price
FROM Products
WHERE Price = 10.00;
این کوئری تمام محصولات با قیمت دقیقاً 10.00 را بازیابی میکند.
اپراتورهای مقایسهای (Comparison Operators)
اپراتورهای مقایسهای برای انجام مقایسات بین مقادیر استفاده میشوند. این اپراتورها شامل:
هستند.
توضیح اپراتورها:
- `<`: کوچکتر از
- `>`: بزرگتر از
- `<=`: کوچکتر یا مساوی با
- `>=`: بزرگتر یا مساوی با
- `<>` (یا `!=` در برخی سیستمها): نامساوی با
مثال استفاده از اپراتور بزرگتر از (`>`):
SELECT ProductID, ProductName, Price
FROM Products
WHERE Price > 10.00;
این کوئری تمام محصولاتی را بازیابی میکند که قیمت آنها بیشتر از 10.00 باشد.
اپراتور BETWEEN
اپراتور `BETWEEN` برای فیلتر کردن مقادیر در یک محدوده مشخص (شامل ابتدا و انتهای محدوده) استفاده میشود.
مثال:
SELECT ProductID, ProductName, Price
FROM Products
WHERE Price BETWEEN 10.00 AND 20.00;
این کوئری تمام محصولاتی را بازیابی میکند که قیمت آنها بین 10.00 و 20.00 (شامل این دو مقدار) قرار دارد.
اپراتور LIKE
اپراتور `LIKE` برای جستجوی الگوهای خاص در ستونهای متنی استفاده میشود. این اپراتور با کاراکترهای وایلدکارد (wildcard characters) مانند `_` (برای یک کاراکتر واحد) و `%` (برای صفر یا بیشتر کاراکتر) کار میکند.
مثال:
SELECT ProductID, ProductName
FROM Products
WHERE ProductName LIKE 'Cha%';
این کوئری تمام محصولاتی را که نام آنها با “Cha” شروع میشود، بازیابی میکند.
اپراتور IN
اپراتور `IN` برای تعیین اینکه آیا یک مقدار با هر یک از مقادیر موجود در یک لیست مطابقت دارد یا خیر، استفاده میشود.
مثال:
SELECT ProductID, ProductName, Category
FROM Products
WHERE Category IN ('Beverages', 'Dairy');
این کوئری تمام محصولاتی را بازیابی میکند که دستهبندی آنها “Beverages” یا “Dairy” باشد. `NOT IN` دقیقاً برعکس عمل میکند.
اپراتورهای AND / OR
اپراتورهای منطقی `AND` و `OR` برای ترکیب چندین شرط در عبارت `WHERE` استفاده میشوند.
- `AND`: زمانی درست است که هر دو شرط صحیح باشند.
- `OR`: زمانی درست است که حداقل یکی از شرایط صحیح باشد.
مثال استفاده از `AND`:
SELECT ProductID, ProductName, Price, Category
FROM Products
WHERE Price > 10.00 AND Category = 'Beverages';
این کوئری محصولاتی را بازیابی میکند که قیمت آنها بیشتر از 10.00 بوده و دستهبندی آنها “Beverages” باشد.
مثال استفاده از `OR`:
SELECT ProductID, ProductName, Price, Category
FROM Products
WHERE Price > 20.00 OR Category = 'Dairy';
این کوئری محصولاتی را بازیابی میکند که قیمت آنها بیشتر از 20.00 باشد یا دستهبندی آنها “Dairy” باشد (یا هر دو).
اپراتورهای IS NULL / IS NOT NULL
این اپراتورها برای بررسی اینکه آیا یک ستون حاوی مقادیر `NULL` (مقادیر نامشخص یا گمشده) است یا خیر، استفاده میشوند.
- `IS NULL`: رکوردهایی را انتخاب میکند که مقدار ستون مشخص شده در آنها `NULL` باشد.
- `IS NOT NULL`: رکوردهایی را انتخاب میکند که مقدار ستون مشخص شده در آنها `NULL` نباشد.
مثال استفاده از `IS NULL`:
SELECT CustomerID, CustomerName, Email
FROM Customers
WHERE Email IS NULL;
این کوئری مشتریانی را بازیابی میکند که آدرس ایمیل آنها ثبت نشده است.
مثال کامل عبارت WHERE در SQL
فرض کنید جدولی به نام Employees دارید که شامل ستونهای EmployeeID, FirstName, LastName, Department و Salary است. میخواهید کارمندانی را پیدا کنید که در بخش ‘Sales’ کار میکنند و حقوقی بین 50000 تا 70000 دلار دارند.
SELECT EmployeeID, FirstName, LastName, Salary
FROM Employees
WHERE Department = 'Sales' AND Salary BETWEEN 50000 AND 70000;
این کوئری به طور موثر دادهها را فیلتر کرده و تنها رکوردهای مطابق با هر دو شرط را نمایش میدهد. با استفاده ترکیبی از این اپراتورها، میتوانید کوئریهای بسیار قدرتمندی برای استخراج دادههای دقیق از پایگاه داده خود ایجاد کنید.