السلام عليكم
أثناء تصفحي لمنتدى سوالف سوفت وجدت [ استفساراً حول بعض أنواع الحقول في mysql ] فأحببت أن أضع الجواب الصحيح بقدر الإمكان والإجابة على معظم الاستفسارات ، ولنبدأ..

أولاًً : ماذا تعني UNSIGNED ؟

تعني أن الحقل هذا لا يقبل القيم العددية السالبة، وطبعاً تستخدم مع أنواع الحقول العددية

ثانياًً : أنواع الحقول في mysql

SMALLINT : للقيم العددية الصحيحة الصغيرة وتتراوح بين -32768 و 32767 أما في حالة UNSIGNED فإنها تتراوح بين 0 و 65535

INT : هذه للقيم العددية العادية ، يعني ليست كبيرة جداً وليست صغيرة جداً ، وتكون بين -2147483648 و 2147483647، أما في حالة UNSIGNED فتكون بين 0 و 4294967295

TINYINT : للقيم العددية الصغيرة جداً ، وقيمتها ما بين -128 و 127 أما في حالة UNSIGNED فتكون بين 0 و 255

وهناك أنواع أخرى مثل MEDIUMINT للقيم العددية الأصغر من INT

وهناك أيضاً BIGINT : وهذه للقيم العددية الكبيرة جدا جدا وتترواح قيمتها بين -9223372036854775808 و 9223372036854775807 وفي حالة UNSIGNED فتكون بين 0 و 18446744073709551615

VARCHAR : للقيم النصية وأكبر عدد أحرف 255

TEXT : هذه أيضاً للقيم النصية وتكون أكبر من VARCHAR وأقصى عدد أحرف هو 65,535

CHAR : هذه أيضاً للقيم النصية وأقصى عدد للحروف هو 255، لكن الفرق بينها وبين VARCHAR أن هذه إذا حددت مثلاًً عدد الحروف 5 وكتبت 3 فإن 2 الباقيين سيتم تعبئتهم بفراغ (space) ، أما VARCHAR فإنها تحفظ القيم بعدد الحروف فقط ولكن تزيد بايت واحد
يوجد نوع آخر وهو LONGTEXT ويقبل عدد حروف يصل إلى 4,294,967,295 أي حوالي 4GB

DATE : هذه للتاريخ فقط وتكون على شكل Y-m-d

هناك نوع آخر وهو DATETIME ويسجل التاريخ بالإضافة إلى الساعة والدقيقة والثانية
على هيئة YYYY-MM-DD HH:MM:SS

هناك نوع آخر وهو TIMESTAMP ويسجل فيه عدد الثواني منذ تاريخ 1/1/1970 الساعة 00:00:00 (توقيت اليونكس)

ملاحظة مهمة جداً : لا تحفظ الأرقام لأنها لا تُحفَظ وإنما افهم المطلوب فقط، ثم بعد ذلك سيصبح بإمكانك معرفة نوع الحقل وطوله بدون مراجعة هذه الأرقام في رأسك :)

ثالثاًً: نصائح في تحديد نوع الحقل المناسب :

  • أولاًً : نوع الحقل TINYINT استخدمه للحقول الصغيرة مثل حقل التأكد من نشر المقال أو أمثاله
  • ثانياًً : نوع الحقل INT استخدمه للحقول التي تحتاج إلى رقماً كبيراً ولكن ليس كبيراً جداً مثل id و hits للمقال أو الموضوع أو أمثاله
  • ثالثاًً : نوع الحقل BIGINT استخدمه للحقول الكبيرة جداً مثل عدد الزيارات للموقع hits الصفحات لأنه يصل إلى عدد كبير
  • رابعاًً : نوع الحقل VARCHAR استخدمه للحقول النصية الصغيرة مثل IP و الاسم والدولة وأمثاله
  • خامساًً : نوع الحقل TEXT استخدمه للنصوص الأكبر من 255 حرف وأصغر من 65 ألف حرف
  • سادساًً : نوع الحقل LONGTEXT استخدمه للنصوص الكبيرة جداً الأكبر من 65 ألف حرف

أنت غير ملزم باتباع الملاحظات السابقة ويمكنك اعتبارها نصيحة :)

رابعاًً: ملاحظات أخرى :

  • نوع الحقل لا علاقة له بالثغرات وإنما بنوع البيانات المحفوظة بداخله
  • من المهم أن تختار نوع الحقل المناسب وحاول قدر الامكان معرفة عدد الأحرف التي تحتاجها ولو بالتقدير
  • حاول قدر الامكان استخدام VARCHAR بدل CHAR
  • نوع الحقل يحدده نوع البيانات واستخدامه ، حاول أن تهتم بهذا الجانب
  • الحقول العددية التي لا تتطلب وجود قيمة سالبة اجعلها UNSIGNED

خامساًً: روابط مهمة للجميع وأنصح بها

وأخيراً ، فإن أصبت فمن الله وإن أخطأت فمن نفسي والشيطان، ومن له رأي أو ملاحظة، فيمكننا نقاش ذلك هنا..