0Pricing
SQL Academy · درس

NULL: قيمة الحقيقة الثالثة

أتقن معنى NULL، ولماذا لا تساوي NULL أي شيء، حتى نفسها، وكيف يؤثر المنطق ثلاثي القيم في عبارات WHERE.

NULL: قيمة الحقيقة الثالثة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما هو NULL؟

تمثّل NULL بيانات غير معروفة أو مفقودة. وهي ليست صفرًا، ولا سلسلة فارغة، ولا قيمة false. إنها الغياب الصريح للقيمة.

لا يساوي NULL أي شيء (ولا حتى نفسه)

هذه هي القاعدة التي تربك الجميع:

SELECT NULL = NULL;       -- NULL (not true!)
SELECT NULL = 0;          -- NULL
SELECT NULL = '';        -- NULL
SELECT NULL <> 1;         -- NULL

استخدم IS NULL وIS NOT NULL

لاختبار NULL، يجب أن تستخدم المسندين الخاصين IS NULL وIS NOT NULL:

SELECT email FROM users WHERE deleted_at IS NULL;       -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL;   -- deleted users

المنطق ثلاثي القيم

يحتوي المنطق المنطقي في SQL على ثلاث قيم: TRUE وFALSE وUNKNOWN (NULL).

ABA AND BA OR B
TRUENULLNULLTRUE
FALSENULLFALSENULL
NULLNULLNULLNULL

يحذف WHERE الصفوف التي يكون فيها المسند NULL

إذا قيّمت WHERE x = 5 إلى NULL لصف ما (لأن x تساوي NULL)، فلن يُعاد ذلك الصف. لا تُبقى إلا الصفوف التي تكون قيمة المسند فيها TRUE.

-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.

مشكلة NULL مع NOT IN

يعيد هذا الاستعلام صفر صفوف إذا كان أي اسم في الاستعلام الفرعي يساوي NULL:

SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned

-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
  SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);

COALESCE: استبدال NULL بقيمة افتراضية

تعيد COALESCE أول وسيط لا يساوي NULL:

SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;

-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.

NULLIF: العكس

تعيد NULLIF(a, b) القيمة NULL عندما تكون a = b، وإلا فتعيد a. وهذا مفيد للتعامل مع القيم المميِّزة مثل '' أو 0 على أنها NULL.

SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.

NULL في دوال التجميع

تتجاهل دوال التجميع (باستثناء COUNT(*)) المدخلات التي تساوي NULL:

-- Suppose:  prices = [10, 20, NULL, 30]
SELECT COUNT(*)     FROM products;  -- 4 (counts rows)
SELECT COUNT(price) FROM products;  -- 3 (counts non-NULL prices)
SELECT AVG(price)   FROM products;  -- 20  (60 / 3, not 60 / 4)
SELECT SUM(price)   FROM products;  -- 60

ترتيب NULL

تفرز PostgreSQL قيم NULL في النهاية افتراضيًا عند الترتيب تصاعديًا، وفي البداية عند الترتيب تنازليًا. ويمكنك تجاوز هذا السلوك:

SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;

تخزين NULL مقابل السلسلة الفارغة

قرّر لكل عمود: هل '' قيمة صالحة؟ إذا لم تكن كذلك، فاستخدم NULL للدلالة على "لا توجد قيمة". أما إذا كانت صالحة، فتعني NULL شيئًا مختلفًا (مثل "لم يُسأل عنه بعد").

كن متسقًا — لا تخلط بين القيمتين في العمود نفسه.

مراجعة

NULL قيمة منطقية مستقلة.

  • اختبرها باستخدام IS NULL، ولا تستخدم = NULL مطلقًا
  • لا تُبقي عوامل التصفية في WHERE إلا الصفوف التي تكون قيمتها TRUE
  • تتجاهل دوال التجميع مدخلات NULL
  • الدالة COALESCE صديقك

تحقق سريع

ماذا يعيد SELECT NULL = NULL;؟

الأسئلة الشائعة

هل درس «NULL: قيمة الحقيقة الثالثة» مجاني؟

نعم — نص درس «NULL: قيمة الحقيقة الثالثة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «NULL: قيمة الحقيقة الثالثة»؟

أتقن معنى NULL، ولماذا لا تساوي NULL أي شيء، حتى نفسها، وكيف يؤثر المنطق ثلاثي القيم في عبارات WHERE. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «NULL: قيمة الحقيقة الثالثة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما هو RDBMS ولماذا تهم الجداول
  2. المفاتيح الأساسية والتفرّد
  3. NULL: قيمة الحقيقة الثالثة
  4. نظرة عامة على أنواع البيانات: INT وVARCHAR وDATE وBOOLEAN
← العودة إلى SQL Academy