فیلتر دادهها در 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;
این کوئری به طور موثر دادهها را فیلتر کرده و تنها رکوردهای مطابق با هر دو شرط را نمایش میدهد. با استفاده ترکیبی از این اپراتورها، میتوانید کوئریهای بسیار قدرتمندی برای استخراج دادههای دقیق از پایگاه داده خود ایجاد کنید.