[MySQL] ملاحظات على بعض أنواع الحقول
الكاتب: Pal Coder | 31 أغسطس 2007
السلام عليكم
أثناء تصفحي لمنتدى سوالف سوفت وجدت [ استفساراً حول بعض أنواع الحقول في 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
خامساًً: روابط مهمة للجميع وأنصح بها
- أنوع الحقول العددية
- أنوع حقول التاريخ والوقت
- أنواع الحقول النصية
- مقارنة بين CHAR و VARCHAR
- دوال التاريخ والوقت في php
- مقال عن دوال التاريخ والوقت في php
وأخيراً ، فإن أصبت فمن الله وإن أخطأت فمن نفسي والشيطان، ومن له رأي أو ملاحظة، فيمكننا نقاش ذلك هنا..