SQLالتعامل مع الحقول الفارغة
- مفهوم القيمة NULL
- طريقة إنشاء حقول لا يمكن أن تكون فارغة
- تجهيز قاعدة البيانات التي سنطبق عليها
- طريقة معرفة الحقول الفارغة
- وضع قيمة إفتراضية مكان الحقول الفارغة التي يتم جلبها
مفهوم القيمة NULL
الحقل الذي تكون قيمته NULL هو فعلياً حقل لا يملك قيمة بعد.
الحقل الإختياري في الجدول هو الحقل الذي يمكن إبقاؤه بلا قيمة. عند إضافة سطر جديد في الجدول أو تحديث سطر موجود فيه، إذا لم يتم وضع قيمة في الحقول الإختيارية فإن قيمتهم ستكون NULL.
في حال وضع صفر أو نص فارغ في الحقل فإنها فعلياً تعتبر قيم عادية في حين أن NULL تعني عدم وجود قيمة على الإطلاق.
طريقة إنشاء حقول لا يمكن أن تكون فارغة
إفتراضياً، الحقول العادية في الجدول يمكن إبقاءها بلا قيمة.
في حال أردت جعل العمود لا يسمح بأن يكون فيه أي حقول فارغة يجب أن تضيف الخاصية NOT NULL أثناء إنشاء الجدول و تعريف العمود. عندها، حين يتم إدخال أي سطر في الجدول يجب إدخل قيمة لكل حقل لا يقبل أن يكون فارغاً و إلا فإنه لن يتم الموافقة على إضافة السطر.
عند تعريف حقل في الجدول كمفتاح أساسي PRIMARY KEY فإنه بشكل تلقائي يتم إعتباره NOT NULL لهذا لا يمكن تركه فارغاً.
في حال لم يتم تحديد أن العمود نوعه NOT NULL أثناء إنشاء الجدول و لكن تم تعديل خصائصه لاحقاً ليصبح كذلك، فإنه في الأسطر الجديدة التي يتم إضافتها فيه لا يمكن ترك الحقل فارغاً، أما الحقول القديمة التي كانت فارغة فيمكن أن تظل فارغة و لكن في حال تحديث الأسطر الموجودة فيها فعندها يجب إعطاءها قيمة.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
و تنشئ فيها جدول إسمه users
يحتوي على بيانات 10 مستخدمين.
الجدول users
يتألف من الحقول التالية:
id
عبارة عن رقم يتم إعطاؤه بشكل تلقائي لكل سطر جديد يتم إضافته.username
يمثل إسم المستخدم و الذي يجب تحديده عند إضافة سطر جديد.country
يمثل بلد المستخدم و الذي يمكن تحديده عند إضافة مستخدم جديد و يمكن تركه فارغاً.
مثال
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash
و إنشاء الجدول users
بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash
من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
فيما يلي البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول users
.
id | user | country |
---|---|---|
1 | rami | NULL |
2 | ahmad | NULL |
3 | hanan | KSA |
4 | saly | Lebanon |
5 | samir | NULL |
6 | hamad | Syria |
7 | abdullah | NULL |
8 | rashed | Oman |
9 | majed | Yaman |
10 | rayan | NULL |
طريقة معرفة الحقول الفارغة
لفحص الحقل لمعرفة ما إن كان يحتوي على قيمة أم أنه فارغ يمكن استخدام العامل IS NULL أو العامل IS NOT NULL.
- العامل IS NULL يستخدم لمعرفة ما إن كان الحقل فارغاً.
- العامل IS NOT NULL يستخدم لمعرفة ما إن كان الحقل غير فارغ.
لا يمكنك اسخدام الرموز =
و !=
و <>
لمعرفة ما إن كان الحقل فارغاً أم لا لأنها لا تُستخدم لهذا الغرض بل تستخدم لمقارنة القيم النصية و الرقمية و التواريخ فقط.
الإستعلام التالي يقوم بعرض كل أسطر الجدول ما عدا الأسطر التي لا تملك قيمة في الحقل country
.
المثال الأول
النتيجة
id | user | country |
---|---|---|
3 | hanan | KSA |
4 | saly | Lebanon |
6 | hamad | Syria |
8 | rashed | Oman |
9 | majed | Yaman |
نلاحظ أنه يوجد 5 مستخدمين معروفين من أي بلد، أي الحقل country
عندهم ليس فارغاً.
الإستعلام التالي يقوم بعرض كل أسطر الجدول التي لا تملك قيمة في الحقل country
.
المثال الثاني
النتيجة
id | user | country |
---|---|---|
1 | rami | NULL |
2 | ahmad | NULL |
5 | samir | NULL |
7 | abdullah | NULL |
10 | rayan | NULL |
نلاحظ أنه يوجد 5 مستخدمين غير معروفين من أي بلد، أي الحقل country
عندهم فارغ.
وضع قيمة إفتراضية مكان الحقول الفارغة التي يتم جلبها
في حال كانت نتيجة الإستعلام تضمن حقول فارغة، يمكنك عرض كلمة مفهومة للمستخدم بدلاً منها مثل Not Specified أو Unknown أو غير محدد أو أي كلمة أخرى لها ذات المعنى.
طريقة تبديل الحقول الفارغة التي قيمتها NULL تختلف من قاعدة بيانات لأخرى على النحو التالي:
- في قواعد بيانات MySQL و قواعد بيانات SQLite نستخدم الدالة IFNULL().
- في قواعد بيانات SQL Server و قواعد بيانات Access نستخدم الدالة ISNULL().
- في قواعد بيانات ORACLE نستخدم الدالة NVL().
في هذه الدورة سنستخدم الدالة IFNULL() لأننا نستخدم قواعد بيانات MySQL.
الإستعلام التالي يقوم بعرض كل أسطر الجدول و يبدل أي قيمة فارغة في الحقل country
بالكلمة 'unknown'
.
مثال
النتيجة
id | user | country |
---|---|---|
1 | rami | Unknown |
2 | ahmad | Unknown |
3 | hanan | KSA |
4 | saly | Lebanon |
5 | samir | Unknown |
6 | hamad | Syria |
7 | abdullah | Unknown |
8 | rashed | Oman |
9 | majed | Yaman |
10 | rayan | Unknown |
نلاحظ أنه يوجد 5 مستخدمين تم وضع القيمة 'Unknown'
لهم في الحقل country
لأنه كان فارغاً عندهم.
في المثال السابق قمنا بوضع الكلمة 'Unknown'
كقيمة إفتراضية لأن الحقل يجب أن يحتوي على قيمة نصية في الأساس فكان وضع هذه القيمة مناسباً. بينما لو كان الحقل في الأساس مخصص لقيم رقمية لكان الأفضل أن نضع 0
كقيمة إفتراضية.