دوره زبان تخصصی برای برنامه‌نویسان (هدیه ویژه ثبت‌نام در دوره‌های متخصص) (فرصت محدود ⏰)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ شفق
وارد کردن عدد در جدول داده ها
جامعه پایتون (وب) ایجاد شده در ۱۴ دی ۱۴۰۳

سلام استاد خسته نباشد من یک دیتابیس ساختم و یکی از ستون جدول مشخصات مشتریان رو به شماره ملی اختصاص دادم، همه کد‌ها را هم درست وارد می‌کنم ولی وقتی میخوام کد ملی را در ستون   IDNumer وارد کنم عددی که وارد می‌کنم کلا قاطی میشه یعنی بهم میریزه.

مثلا وارد می‌کنم 4060374156 وقتی نمایش اطلاعات رو میزنم عدد درج شده در دول 2147483647 وارد میشه حتی در مورد مثلا ستون موبایل هم وقتی موبایل وارد می‌کنم دقیقا همین عدد وارد میشه 

سلام،

هر نوع داده توی MySQL یه محدوده مشخص داره. مثلاً INT، که به صورت پیش‌فرض (علامت‌دار یا signed) میتونه از -2147483648 تا 2147483647 مقدار بگیره (همون دو میلیارد و خورده‌ای) و برای این کار ۴ بایت حافظه استفاده میکنه.

حالا اگه فیلدی فقط قراره اعداد مثبت داشته باشه، میتونی اون رو unsigned تعریف کنی. تو این حالت بازه مقادیر میشه 0 تا 4294967295 (چهار میلیارد و خورده‌ای)، چون دیگه فضای مربوط به اعداد منفی رو نمیگیره.

اگه با اعدادی سروکار داری که از این بازه هم بزرگ‌تره، می‌تونی از نوع BIGINT استفاده کنی که کلی بازه بزرگ‌تری داره.

اما برای فیلدهایی مثل شماره موبایل یا کد ملی، بهتره از VARCHAR استفاده کنی، چون:

+ این اعداد به صورت داده‌های متنی ذخیره میشن.
+ نیازی به عملیات ریاضی روشون نداری.
+ صفرهای اول (مثل ۰۹۱۲...) حفظ میشن.

 

نکته: اگه با فیلدهایی سروکار داری که طولشون همیشه ثابته، مثل کد ملی که همیشه 10 رقمه و نه کم میشه و نه زیاد، بهتره از CHAR(10) استفاده کنی. چرا؟ چون CHAR حافظه رو به صورت ثابت اشغال میکنه و نیازی به محاسبه طول داده نداره، بنابراین سرعت بهتری ارائه میده. این یه مزیت نسبت به VARCHAR تو مواردی مثل کد ملی محسوب میشه.

اما اگه طول داده‌ها متغیره (مثل اسم و فامیل یا آدرس یا توضیحات)، VARCHAR بهتره. چون برخلاف CHAR، فقط به اندازه همون طول داده حافظه میگیره و فضای اضافی رو پر نمیکنه.

محسن موحد ۱۴ دی ۱۴۰۳، ۲۱:۳۷