عندما تختار نوع الحقل الذى ستستخدمه
فى قاعدة البيانات (كما شرحنا بالدرس السابق)
تحدد الحقل اذا كان رقمى, او نصى, او وقت وتاريخ.
هناك ايضا خصائص اضافية لهذه الحقول يجب فهمها لأنها لا غنى عنها
اول هذه الخصائص هى الخاصية AUTO_INCREMENT
ماذا تعنى هذه الخاصية؟
هذه الخاصية توضع للحقول الرقمية فقط. يعنى لا يمكن لحقل من النوع TEXT ان تضع احد خصائصه AUTO_INCREMENT
حسنا. ماهو عمله هذه الخاصية؟
اتتذكر الدرس الثانى عندما تحدثنا عن الـ Primary Key ؟
(ولاحظ Primary Key وليس Foreign Key )
احرص دائما عندما تجعل احد الحقول هو الـ Primary Key ان يكون له الخاصية AUTO_INCREMENT
وهى تعنى الزيادة التلقائية.
تخيل معى ان لديك الجدول التالى
- ID (هذا هو الحقل الـ Primary Key)
- username
- password
- email
عندما تقوم بإضافة تسجيل (للمرة الأولى) جديد وتدخل بهذا التسجيل البيانات التالية كامثال
- ID (نتركه فارغا ولا نكتب شئ)
- username = Ahmed (كامثال)
- password = secret
- email =
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]ما الذى سيحدث عندما نقوم بإدخال هذه البيانات؟ (بالطبع فى حالة ان الجدول له الخاصية AUTO_INCREMENT)
سيتم وضع الرقم 1 داخل الحقل ID
وعندما نقم بإضافة بيانات مستخدم اخر, بنفس الطريقة سيتم وضع الرقم 2 فى حقل الـ ID
نستخلص من هذا, ان الخاصية AUTO_INCREMENT
تقوم بإضافة اول اكبر رقم صحيح بعد اخر رقم ID موجود بالجدول.
بمعنى اننا اذا اضفنا (اتحدث عن مثال جدول "المستخدمين" الموجود بهذا الموضوع)
بيانات اربع مستخدمين, سيكون اول مستخدم له الهوية 1 (الهوية تعنى الـ id)
وثانى مستخدم تم اضافته له الهوية 2 والثالث له الهوية 3 والرابع له الهوية 4, وهكذا.
ماذا اذا قمنا بحذف ثانى مستخدم تم اضافته؟ والذى كانت هويته هى 2 ؟
لا يوجد اى مشكلة فى هذا سيصبح تسلسل ارقام الهوية بالشكل التالى
1 و 3 و 4
وعندما تقوم بإضافة مستخدم خامس سيكون له الهوية 5.
لكن سيكون هناك مشكلة اذا حاولت اصلاح الترتيب التسلسلى. (كما ذكرنا عن الـ Primary Key لا يجب ان نغيره بعد ان تم اضافته).
هناك ايضا الخواص التالية الإضافية للحقول وسنشرحهم جميعا فى هذا الدرس بإذن الله.
- UNSIGNED
- ZEROFILL
- DEFAULT
- NOT NULL
اول خاصيتين يتم يستخدموا ايضا مع الحقول الرقمية فقط.
الخاصية UNSIGNED تعنى ان الحقل لا يقبل القيم السالبة. يعنى لا يقبل ارقام مثل -5 مثلا
واذا حاولت ان تضف به قيمة سالبة سينتج عن هذا خطأ فى الإدخال.
وهذا الخاصية ايضا انصح بشدة ان تستخدمها ايضا لحقول الـ Primary Key
(ملحوظة سريعة, سوف ارمز للـ Primary key من الأن بالرمز PK اتمنى ان تتذكر هذه الملحوظة اثناء متابعتك للدورة)
الخاصية الثانية ZEROFILL
هذه الخاصية نادرا ماتستخدم لكنها ضرورية فى بعض الأحيان.
وهى ايضا للحقول الرقمية فقط
عندما تعطى لأحد الحقول الخاصية ZEROFILL
هذا يعنى ان هذا الحقل يمكنه الإحتفاظ بالأرقام التى تحتوى على صفر بالجهة اليسرى
لنفترض ان لدينا حقل يتم حفظ عناوين مكتب البريد به او مايعرف بالـ ZIP code
هناك بعض هذه الأكواد تبدأ بـ 0 وبما ان صفر على اليسار لا يعنى اى شئ بالنسبة للأرقام فإنه يتم حذف تلقائيا. لكن اذا اضفنا خاصية الـ ZEROFILL
لهذا الحقل. سوف يتم حفظ هذا الصفر بدون مشاكل.
يعنى ببساطة هذا الرقم 01211 اذا ادخلته بحقل ليس له الخاصية ZEROFILL
سوف يحفظ هكذا 1211 لكن اذا كان الحقل له الخاصية ZEROFILL سوف يتم حفظ الرقم كما تم ادخاله 01211
الخاصية DEFAULT
وهى تعنى الإفتراضى.
لشرح هذا المعنى, اتتذكر نوع الحقل ENUM الذى شرحناه بالدرس السابق؟
والذى يوضع به عدة اختيارات وعند ادخال اى سجل جديد له نحدد واحد فقط من هذه الإختيارات؟
لنفرض ان لدينا الحقل Gender والذى يعنى النوع ذكر او انثى او Male, female
هنا نستخدم الخاصية DEFAULT
مع الحقل ENUM
ليكون بالشكل التالى
كود :
ENUM('male', 'female') DEFAULT 'male'
(الرجال اولا
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة] )
هذا يعنى ان هذا الحقل يتم وضع احد القيمتين له male او female
واذا لم يتم تحديد القيمة سوف يتم تلقائيا وضع القيمة male
بالنسبة لأخر خاصية, خاصية NOT NULL
اولا معنى كلمة NULL يعنى قيمة مجهولة, ليست رقم وليست 0 وليست نص فارغ تماما
وليس حتى مسافة فارغة. هذا افضل تعريف يمكن ان نعرف به معنى كلمة NULL
لذلك اذا اردنا احد الخقول (وهذا يكون مع اغلب الحقول) ان لا يتم اضافة سجل جديد دون ان يتم تعيين قيمة له, يجب ان نجعله NOT NULL
كاحقل اسم المستخدم مثلا, هل يمكن ان تضيف مستخدم جديد بقاعدة البيانات دون ان يكون له اسم مستخدم؟ بالطبع لا. وعليه حقل اسم المستخدم يجب ان يكون NUT NULL
لكن هناك حقول اخرى يمكن ان لا نضع لها هذه الخاصية وهذا يعنى انه يمكن ان تكون NULL
مثل حقل موقع العضو مثلا, ليس كل الأعضاء الذين يقوموا بالتسجيل يمتلكوا مواقع. بالتالى لا نضيف لهذا الحقل الخاصية NOT NULL بالتالى يمكن تركه فارغا بدون مشاكل.
وكاملحوظة اضافية بالنسبة لحقول الـ PK يجب ان يكون له كل من الخواص التالية
- NOT NULL
- UNSIGNED
- AUTO_INCREMENT
اتمنى يكون الدرس بسيط وواضح وزود رصيد معلوماتك حول MySql
واراكم بالدرس القادم بإذن الله.
المصدر:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]