يمنع الفهرس UNIQUE تكرار القيم غير الفارغة وفق قواعد المقارنة المطبقة على العمود. لكنه يسمح في MySQL بوجود أكثر من قيمة NULL إذا كان العمود يقبلها أصلًا. تمثل هذه القيمة غياب المعلومة، ولذلك لا تعامل هنا مثل عنوان بريد معلوم مكرر في صفين.
يفيد هذا السلوك عندما يكون البريد الإلكتروني اختياريًا، لكن يجب أن يكون فريدًا عند إدخاله. يمكن تسجيل عدة عملاء لم يقدموا بريدًا، ثم رفض محاولة استخدام عنوان معلوم سبق تخزينه. إذا كان البريد إلزاميًا أيضًا، فلا يكفي التفرد وحده، بل نضيف NOT NULL لتحقيق المتطلب الآخر بصورة مستقلة.
مثال
CREATE TABLE customers (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
INSERT INTO customers VALUES
(1, NULL),
(2, NULL),
(3, 'aya@example.com');
تنجح الصفوف الثلاثة في المثال لأن العنوان المعلوم لم يتكرر. ومن المهم عدم الخلط بين NULL والنص الفارغ، فالنص الفارغ قيمة نصية فعلية، وتكراره يخضع لقيد التفرد مثل بقية القيم المخزنة.
باختصار: يسمح UNIQUE بعدة قيم NULL في العمود القابل لها، بينما يفرض NOT NULL وجود قيمة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.