اپراتور NOT در SQL برای برعکس کردن یک شرط استفاده می‌شود. یعنی اگر یک شرط مقدار True داشته باشد، NOT آن را به False تبدیل می‌کند و برعکس. این ویژگی به ما کمک می‌کند که اطلاعاتی را انتخاب کنیم که مطابق با یک شرط خاص نباشند.


۱. استفاده از NOT همراه با = (برابر بودن) ❌

فرض کنید می‌خواهیم همه‌ی مشتریانی را که از کشور اسپانیا نیستند، انتخاب کنیم. برای این کار می‌توانیم از NOT همراه با = استفاده کنیم:

📌 مثال: انتخاب مشتریانی که از اسپانیا نیستند

SELECT * FROM Customers
WHERE NOT Country = 'Spain';

توضیح:

  • WHERE NOT Country = 'Spain' یعنی تمام مشتریانی را انتخاب کن که کشورشان اسپانیا نباشد.

۲. استفاده از NOT LIKE (الگوهای متنی) 🔍

گاهی می‌خواهیم اطلاعاتی را حذف کنیم که مطابق یک الگوی خاص باشند. مثلا می‌خواهیم مشتریانی را انتخاب کنیم که نام آن‌ها با حرف A شروع نشود.

📌 مثال: انتخاب مشتریانی که نامشان با A شروع نمی‌شود

SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'A%';

توضیح:

  • LIKE 'A%' یعنی نام‌هایی که با A شروع می‌شوند.
  • NOT LIKE 'A%' یعنی نام‌هایی که با A شروع نمی‌شوند.

۳. استفاده از NOT BETWEEN (بین دو مقدار) 🔢

اگر بخواهیم مقادیری را که در یک بازه مشخص نیستند فیلتر کنیم، می‌توانیم از NOT BETWEEN استفاده کنیم. مثلا مشتریانی را پیدا کنیم که CustomerID آن‌ها بین ۱۰ تا ۶۰ نباشد.

📌 مثال: انتخاب مشتریانی که شناسه آن‌ها بین ۱۰ تا ۶۰ نباشد

SELECT * FROM Customers
WHERE CustomerID NOT BETWEEN 10 AND 60;

توضیح:

  • BETWEEN 10 AND 60 یعنی اعدادی بین ۱۰ و ۶۰.
  • NOT BETWEEN 10 AND 60 یعنی اعدادی خارج از این بازه.

۴. استفاده از NOT IN (نبودن در یک لیست) 📋

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

📌 مثال: انتخاب مشتریانی که شهرشان پاریس یا لندن نیست

SELECT * FROM Customers
WHERE City NOT IN ('Paris', 'London');

توضیح:

  • IN ('Paris', 'London') یعنی فقط مشتریانی که در پاریس یا لندن هستند.
  • NOT IN ('Paris', 'London') یعنی مشتریانی که در پاریس یا لندن نیستند.

۵. استفاده از NOT برای مقایسه‌های عددی 🔢

می‌توانیم از NOT برای برعکس کردن عملگرهای مقایسه‌ای مانند > و < استفاده کنیم.

✅ انتخاب مشتریانی که CustomerID آن‌ها بیشتر از ۵۰ نباشد

SELECT * FROM Customers
WHERE NOT CustomerID > 50;

🔹 معادل کوتاه‌تر:

SELECT * FROM Customers
WHERE CustomerID !> 50;

✅ انتخاب مشتریانی که CustomerID آن‌ها کمتر از ۵۰ نباشد

SELECT * FROM Customers
WHERE NOT CustomerID < 50;

🔹 معادل کوتاه‌تر:

SELECT * FROM Customers
WHERE CustomerID !< 50;

توضیح:

  • NOT CustomerID > 50 یعنی مشتریانی که شناسه آن‌ها بیشتر از ۵۰ نباشد (یعنی ۵۰ یا کمتر).
  • NOT CustomerID < 50 یعنی مشتریانی که شناسه آن‌ها کمتر از ۵۰ نباشد (یعنی ۵۰ یا بیشتر).

💡 تمرین برای شما 🎯

۱. یک کوئری بنویسید که همه‌ی مشتریانی که کشورشان آلمان (Germany) نیست را انتخاب کند.
۲. مشتریانی را انتخاب کنید که کد پستی آن‌ها بین ۲۰۰۰۰ تا ۵۰۰۰۰ نباشد.
۳. مشتریانی را پیدا کنید که از کشورهای مکزیک (Mexico) یا سوئد (Sweden) نباشند.

🔍 جواب خود را در SQL اجرا کنید و نتیجه را بررسی کنید!


📌 جمع‌بندی

NOT برای برعکس کردن شرط‌ها در SQL استفاده می‌شود.
✅ می‌توان از آن همراه با عملگرهای مقایسه‌ای، LIKE، IN، و BETWEEN استفاده کرد.
✅ مثال‌های مختلف شامل NOT =, NOT LIKE, NOT BETWEEN, NOT IN, NOT >, NOT < را بررسی کردیم.