در MySQL، عملگرهای AND
و OR
برای ترکیب چندین شرط در دستورات WHERE
استفاده میشوند.
این عملگرها تعیین میکنند که رکوردها بر اساس یک یا چند شرط انتخاب شوند.
AND
→ همه شرایط باید درست باشند تا رکورد انتخاب شود.OR
→ حداقل یکی از شرایط باید درست باشد تا رکورد انتخاب شود.
۱. استفاده از AND در MySQL
تعریف:
عملگر AND
زمانی استفاده میشود که همهی شروط باید درست باشند تا یک رکورد انتخاب شود.
ساختار کلی:
SELECT column1, column2, ... FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
مثال: دریافت کاربران بالای ۱۸ سال که در شهر “تهران” هستند
SELECT * FROM users WHERE age > 18 AND city = 'تهران';
🔹 این کوئری فقط کاربرانی را نمایش میدهد که هم سنشان بیشتر از ۱۸ باشد و هم شهرشان تهران باشد.
مثال: نمایش محصولاتی که قیمتشان بیش از ۵۰۰۰۰۰ تومان است و در انبار موجودند
SELECT * FROM products WHERE price > 500000 AND stock > 0;
🔹 فقط محصولاتی نمایش داده میشوند که قیمتشان بالاتر از ۵۰۰۰۰۰ باشد و مقدار موجودی آنها بیشتر از ۰ باشد.
۲. استفاده از OR در MySQL
تعریف:
عملگر OR
زمانی استفاده میشود که حداقل یکی از شروط باید درست باشد تا یک رکورد انتخاب شود.
ساختار کلی:
SELECT column1, column2, ... FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
مثال: نمایش کاربران ساکن “تهران” یا “مشهد”
SELECT * FROM users WHERE city = 'تهران' OR city = 'مشهد';
🔹 این کوئری تمام کاربرانی که در تهران یا مشهد ساکن هستند را نمایش میدهد.
مثال: نمایش محصولاتی که قیمتشان کمتر از ۱۰۰ هزار تومان است یا در انبار موجود نیستند
SELECT * FROM products WHERE price < 100000 OR stock = 0;
🔹 در این کوئری محصولاتی نمایش داده میشوند که یا قیمتشان کمتر از ۱۰۰ هزار تومان است یا موجودی آنها صفر است.
۳. ترکیب AND و OR برای ایجاد شروط پیچیدهتر
در بسیاری از موارد، نیاز به ترکیب AND
و OR
داریم.
برای مشخص کردن اولویت بررسی شرطها، از پرانتز ()
استفاده میکنیم.
مثال: نمایش کاربرانی که در “تهران” هستند و بالای ۲۵ سال دارند، یا در “مشهد” زندگی میکنند
SELECT * FROM users WHERE (city = 'تهران' AND age > 25) OR city = 'مشهد';
🔹 ابتدا کاربران تهرانی که بالای ۲۵ سال دارند فیلتر میشوند.
🔹 سپس تمام کاربران مشهدی نیز نمایش داده میشوند، صرفنظر از سن.
مثال: نمایش محصولاتی که قیمتشان بین ۱۰۰۰۰۰ تا ۵۰۰۰۰۰ است و در انبار موجود هستند، یا دستهبندی آنها “لوازم جانبی” است
SELECT * FROM products WHERE (price BETWEEN 100000 AND 500000 AND stock > 0) OR category = 'لوازم جانبی';
🔹 این کوئری دو گروه از محصولات را نمایش میدهد:
- محصولاتی که قیمتشان بین ۱۰۰ هزار تا ۵۰۰ هزار است و در انبار موجود هستند.
- محصولاتی که دستهبندی آنها “لوازم جانبی” است.
۴. استفاده از NOT برای معکوس کردن شرطها
برای معکوس کردن شرطها، از NOT
استفاده میشود.
مثال: نمایش کاربرانی که در تهران نیستند و بالای ۱۸ سال دارند
SELECT * FROM users WHERE city != 'تهران' AND age > 18;
🔹 کاربرانی نمایش داده میشوند که شهر آنها تهران نباشد و سنشان بیشتر از ۱۸ باشد.
مثال: نمایش محصولاتی که قیمتشان کمتر از ۵۰۰ هزار تومان نیست
SELECT * FROM products WHERE NOT price < 500000;
🔹 محصولاتی نمایش داده میشوند که قیمت آنها ۵۰۰ هزار تومان یا بیشتر باشد.
۵. مرتبسازی (ORDER BY) دادههای فیلتر شده
میتوان دادههای فیلتر شده را مرتب کرد.
مثال: دریافت کاربران بالای ۱۸ سال که در تهران یا مشهد هستند و مرتبسازی بر اساس سن نزولی
SELECT * FROM users WHERE (city = 'تهران' OR city = 'مشهد') AND age > 18 ORDER BY age DESC;
🔹 این کوئری کاربران بالای ۱۸ سال در تهران یا مشهد را نمایش داده و آنها را بر اساس سن (از بزرگترین به کوچکترین) مرتب میکند.
۶. محدود کردن نتایج فیلتر شده با LIMIT
برای نمایش تعداد مشخصی از نتایج فیلتر شده، از LIMIT
استفاده میشود.
مثال: نمایش ۵ کاربر اول که در تهران یا مشهد زندگی میکنند
SELECT * FROM users WHERE city = 'تهران' OR city = 'مشهد' LIMIT 5;
🔹 این کوئری ۵ نفر اول از لیست کاربران تهران یا مشهد را نمایش میدهد.
۷. استفاده از AND و OR در بهروزرسانی و حذف دادهها
علاوه بر SELECT
، عملگرهای AND
و OR
در UPDATE
و DELETE
نیز استفاده میشوند.
مثال: افزایش ۱۰ درصدی قیمت محصولاتی که در دستهبندی “لوازم الکترونیکی” هستند و قیمتشان بالای ۵۰۰ هزار تومان است
UPDATE products SET price = price * 1.1 WHERE category = 'لوازم الکترونیکی' AND price > 500000;
مثال: حذف کاربرانی که یا سنشان زیر ۱۸ سال است یا ایمیل ندارند
DELETE FROM users WHERE age < 18 OR email IS NULL;
🔹 این کوئری کاربرانی که کمتر از ۱۸ سال دارند یا ایمیل ندارند را حذف میکند.
نتیجهگیری
AND
→ وقتی میخواهید تمام شروط همزمان برقرار باشند.OR
→ وقتی کافی است یکی از شروط برقرار باشد.- ترکیب
AND
وOR
→ برای ایجاد فیلترهای پیشرفتهتر و دقیقتر. NOT
→ برای معکوس کردن یک شرط.ORDER BY
وLIMIT
→ برای مرتبسازی و محدود کردن نتایج.- در
UPDATE
وDELETE
→ برای تغییر یا حذف گروهی از دادهها بر اساس چند شرط.
✅ با درک و استفادهی درست از عملگرهای AND
و OR
در MySQL، میتوان گزارشها و فیلترهای پیشرفتهای برای دادهها ایجاد کرد.