سؤال

في أي حالات ستستخدمها؟ هناك الكثير من الفرق؟ الذي استخدمته عادة من قبل محركات الثبات لتخزين المنجدات؟

هل كانت مفيدة؟

المحلول

TinyInt عبارة عن قيمة عدد صحيح 8 بت ، يمكن للحقل بتة بتات بين بت 1 بت ، بت (1) ، و 64 بت ، بت (64). بالنسبة للقيم المنطقية ، يكون البت (1) شائعًا جدًا.

نصائح أخرى

من نظرة عامة على الأنواع الرقمية;

بت [(م)

نوع المجال قليلا. يشير M إلى عدد البتات لكل قيمة ، من 1 إلى 64. الافتراضي هو 1 إذا تم حذف M.

تمت إضافة نوع البيانات هذا في MySQL 5.0.3 لـ Myisam ، وتم تمديده في 5.0.5 إلى الذاكرة ، Innodb ، BDB ، و NdbCluster. قبل 5.0.3 ، Bit هو مرادف لـ TinyInt (1).

Tinyint [(M)] [غير موقعة] [Zerofill

عدد صحيح صغير جدا. النطاق الموقّع هو -128 إلى 127. النطاق غير الموقّع هو من 0 إلى 255.

بالإضافة إلى ذلك النظر في هذا ؛

منطقي ، منطقية

هذه الأنواع هي مرادفات لـ TinyInt (1). تعتبر قيمة الصفر خاطئة. تعتبر القيم غير الصفرية صحيحة.

كل هذه المناقشات النظرية رائعة ، ولكن في الواقع ، على الأقل إذا كنت تستخدم MySQL وعلى SQLServer أيضًا ، فمن الأفضل الالتزام ببيانات غير ثنائية للاشتعال الخاصة بك لسبب بسيط هو أنه من الأسهل العمل معك عندما تكون عندما تكون عندك العمل مع إعادة إخراج البيانات ، والاستعلام وما إلى ذلك. من المهم بشكل خاص إذا كنت تحاول تحقيق قابلية التشغيل البيني بين MySQL و SQLServer (أي أنك تزامن البيانات بين الاثنين) ، لأن التعامل مع نوع البيانات المختلف في اثنين منهما. لذلك في الممارسة العملية ، سيكون لديك الكثير من المتاعب إذا التزمت بنمذجة بيانات رقمية. أود أن أوصي بـ MySQL للالتزام مع Bool أو Boolean الذي يتم تخزينه على أنه TinyInt (1). حتى الطريقة التي يعرض بها MySQL Workbench و MySQL أن نوع البيانات ليست لطيفة (إنه رمز صغير للبيانات الثنائية). لذا كن عمليًا وحفظ نفسك المتاعب (وللأسف أنا أتحدث من التجربة).

يجب أن يسمح بت 0 و 1 فقط (و NULL ، إذا لم يتم تعريف الحقل على أنه ليس فارغًا). يسمح TinyInt (1) بأي قيمة يمكن تخزينها في بايت واحد ، -128..127 أو 0..255 اعتمادًا على ما إذا كانت غير موقعة (يوضح 1 أنك تنوي استخدام رقم واحد فقط ، ولكنه يفعل ذلك لا تمنعك من تخزين قيمة أكبر).

بالنسبة للإصدارات التي تزيد عن 5.0.3 ، يتم تفسير BIT على أنها TinyInt (1) ، لذلك هناك رقم الفرق هناك.

يحتوي BIT على "هذا هو الدلالي المنطقي" ، وستنظر بعض التطبيقات في TinyInt (1) بنفس الطريقة (بسبب الطريقة التي يستخدم بها MySQL لعلاجها) ، لذلك قد تقوم التطبيقات بتنسيق العمود كخانة اختيار إذا قاموا بالتحقق من النوع واتخاذ قرار بشأن تنسيق بناء على ذلك.

قد يكون خطأ ولكن:

Tinyint هو عدد صحيح بين 0 و 255

بت إما 1 أو 0

لذلك بالنسبة لي قليلا هو خيار المنطق

من تجربتي ، أخبرك أن BIT لديه مشاكل في أنواع OS OS Linux (Ubuntu لـ EX). لقد قمت بتطوير ديسيبل على Windows وبعد أن نشرت كل شيء على Linux ، واجهت مشاكل في الاستعلامات التي تم إدراجها أو تحديدها من الجداول التي تحتوي على نوع بيانات بت.

بت ليست آمنة الآن. لقد تغيرت إلى Tinyint (1) وعملت تمامًا. أعني أنك تحتاج فقط إلى قيمة للاختلاف إذا كانت 1 أو 0 و tinyint (1) لا بأس بذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top