در MySQL، برای فیلتر کردن دادهها از دستور WHERE
در SELECT
، UPDATE
، DELETE
و سایر کوئریها استفاده میشود.
این دستور امکان انتخاب رکوردهای خاص بر اساس یک یا چند شرط را فراهم میکند.
۱. ساختار کلی دستور WHERE
SELECT column1, column2, ... FROM table_name WHERE condition;
🔹 column1, column2, ...
→ نام ستونهایی که میخواهید نمایش داده شوند.
🔹 table_name
→ نام جدولی که دادهها از آن فیلتر میشوند.
🔹 condition
→ شرطی که رکوردها باید داشته باشند تا در نتیجه نمایش داده شوند.
۲. فیلتر کردن دادهها بر اساس مقدار عددی
مثال: نمایش کاربران بالای ۱۸ سال
SELECT * FROM users WHERE age > 18;
🔹 این کوئری فقط کاربرانی که سن آنها بیشتر از ۱۸ است را نمایش میدهد.
مثال: نمایش کاربرانی که دقیقاً ۲۵ سال دارند
SELECT * FROM users WHERE age = 25;
🔹 فقط کاربرانی که مقدار age = 25 دارند نمایش داده میشوند.
عملگرهای عددی پرکاربرد در WHERE
عملگر | توضیح |
---|---|
= | برابر بودن |
!= یا <> | نابرابر بودن |
> | بزرگتر از |
< | کوچکتر از |
>= | بزرگتر یا مساوی |
<= | کوچکتر یا مساوی |
۳. فیلتر کردن دادهها بر اساس مقدار متنی
برای جستجو در متون، از عملگر =
یا LIKE
استفاده میشود.
مثال: نمایش کاربران با نام “علی”
SELECT * FROM users WHERE name = 'علی';
مثال: نمایش کاربران با نامی که با “م” شروع میشود
SELECT * FROM users WHERE name LIKE 'م%';
🔹 علامت %
نشان میدهد که هر مقداری بعد از “م” مجاز است.
مثال: نمایش کاربران با نامی که شامل “رضا” است
SELECT * FROM users WHERE name LIKE '%رضا%';
🔹 این کوئری تمام کاربرانی را نمایش میدهد که “رضا” در نامشان وجود دارد.
عملگرهای LIKE در MySQL
الگو | توضیح |
---|---|
'A%' | شروع با حرف A |
'%A' | پایان با حرف A |
'%A%' | شامل حرف A در هر جای متن |
'A_' | شروع با A و دقیقاً یک حرف بعد از آن |
'A_%' | شروع با A و حداقل یک حرف بعد از آن |
۴. فیلتر کردن دادهها بر اساس مقدار NULL
اگر بخواهید رکوردهایی که مقدار NULL دارند را پیدا کنید، باید از IS NULL
یا IS NOT NULL
استفاده کنید.
مثال: نمایش کاربرانی که شماره تلفن آنها وارد نشده است
SELECT * FROM users WHERE phone IS NULL;
مثال: نمایش کاربرانی که شماره تلفن دارند
SELECT * FROM users WHERE phone IS NOT NULL;
۵. فیلتر کردن دادهها بر اساس چندین شرط (AND و OR)
مثال: نمایش کاربرانی که بالای ۲۰ سال سن دارند و شهر آنها “تهران” است
SELECT * FROM users WHERE age > 20 AND city = 'تهران';
🔹 شرط AND باعث میشود هر دو شرط همزمان برقرار باشند.
مثال: نمایش کاربرانی که سن آنها کمتر از ۱۸ سال یا شهرشان “مشهد” است
SELECT * FROM users WHERE age < 18 OR city = 'مشهد';
🔹 شرط OR باعث میشود اگر یکی از شرطها درست باشد، رکورد نمایش داده شود.
عملگرهای منطقی در WHERE
عملگر | توضیح |
---|---|
AND | تمام شرایط باید برقرار باشند |
OR | حداقل یکی از شرایط باید برقرار باشد |
NOT | شرط را معکوس میکند |
۶. فیلتر کردن دادهها با BETWEEN
BETWEEN
برای انتخاب مقادیر بین دو مقدار مشخص استفاده میشود.
مثال: نمایش کاربران با سن بین ۲۰ تا ۳۰ سال
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
🔹 مقادیر ۲۰ و ۳۰ نیز شامل میشوند.
مثال: نمایش سفارشهای بین دو تاریخ مشخص
SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
۷. فیلتر کردن دادهها با IN
IN
برای بررسی وجود مقدار در یک لیست خاص استفاده میشود.
مثال: نمایش کاربرانی که در شهرهای “تهران”، “مشهد” یا “اصفهان” هستند
SELECT * FROM users WHERE city IN ('تهران', 'مشهد', 'اصفهان');
مثال: نمایش محصولاتی که دستهبندی آنها “موبایل” یا “لپتاپ” است
SELECT * FROM products WHERE category IN ('موبایل', 'لپتاپ');
۸. ترکیب فیلترها برای گزارشهای پیشرفته
مثال: نمایش کاربرانی که در شهر “تهران” یا “مشهد” هستند و سن آنها بین ۲۵ تا ۴۰ سال است
SELECT * FROM users
WHERE (city = 'تهران' OR city = 'مشهد')
AND age BETWEEN 25 AND 40;
🔹 () برای تعیین اولویت بررسی شرطها استفاده شده است.
۹. مرتبسازی دادههای فیلترشده
میتوان دادههای فیلتر شده را مرتبسازی کرد.
مثال: نمایش کاربران بالای ۲۰ سال و مرتبسازی بر اساس سن نزولی
SELECT * FROM users WHERE age > 20 ORDER BY age DESC;
۱۰. محدود کردن تعداد نتایج فیلترشده
برای نمایش تعداد مشخصی از رکوردهای فیلترشده از LIMIT
استفاده میشود.
مثال: نمایش ۵ کاربر با بیشترین سن
SELECT * FROM users WHERE age > 18 ORDER BY age DESC LIMIT 5;
نتیجهگیری
WHERE
برای فیلتر کردن دادهها بر اساس مقدار عددی، متنی، NULL، تاریخ و … استفاده میشود.- عملگرهای شرطی مانند
=
،!=
،>
,<
,LIKE
,BETWEEN
,IN
,AND
,OR
در فیلتر کردن دادهها کاربرد دارند. - با استفاده از
ORDER BY
دادههای فیلترشده را میتوان مرتب کرد. LIMIT
برای محدود کردن تعداد نتایج فیلتر شده مفید است.- ترکیب فیلترهای پیشرفته، امکان استخراج گزارشهای دقیق و بهینه را فراهم میکند.
✅ با استفاده از WHERE
در MySQL، میتوان بهراحتی دادهها را بر اساس شرایط مختلف فیلتر و مدیریت کرد.