انواع داده در MySQL

  • آپدیت شده در تاریخ

آشنایی با انواع داده در MySQL در طراحی بهینه بانک های اطلاعاتی بسیار مهم است . دیتابیس MySQL لیست بسیار بزرگی از انواع داده ها (Data Types) را پشتیبانی می کند . و بر خلاف PHP , حتما باید در هر یک از ستون های جداول این نوع داده را مشخص کنید.

MySQL نوع داده های بسیار زیادی را پشتیبانی می کند که در سه دسته بندی اصلی تقسیم می شوند :

  1. نوع داده عددی (Numeric)
  2. نوع داده رشته ای (String)
  3. نوع داده تاریخ و زمان (Date/Time)

در مقاله آموزشی انواع داده در MySQL , هر سه از دسته بندی های بالا را به صورت جداگانه بررسی می کنیم.

 

نوع داده عددی (Numeric)

این مقدار اعداد می تواند هر نوعی مثل عدد صیحیح , اعشار , دسیمال , ۰و۱ (boolean) و غیر باشند . همچنین لیست داده های عددی قابل پشتیبانی توسط MySQL به دسته های زیر تقسیم می شوند .

  • Integers – بر اساس تعداد بایت های اختصاص یافته فضای ذخیره سازی , این نوع های عددی به به ترتیب TINYINT , SMALLINT , MEDIUMINT , INT , BIGINT تقسیم بندی می شوند .
  • اعداد اعشار  (fLOAT) – این دسته بندی نیز دارای دو نوع FLOAT , DOUBLE که به ترتیب نشان دهنده اعداد اشاری با درصد یکان و دهگان است .

این نوع از داده ها برای ذخیره مقادیر مشخص شده با درصد اعشار آنها استفاده می شود که مقدار بعد نقطه اعشار را پاکسازی و یک مقدار تقریبی را تولید می کنند . برای مثال , مقدار ۳٫۸۸۳۳۳ را به صورت تقریبی ۳٫۸۸ در نظر می گیرد .

  • Decimal / Numeric – این داده مقدار را بصورت دقیق (نه تقریبی) ذخیره می کند.
  • Binary – مشخصا مقدار ۰ و ۱ را ذخیره می کند

انواع داده در MySQL

نوع داده رشته ای (String)

یکی از مهمتری بخش های انواع داده در MySQL , رشته ها هستند. که شامل CHAR , VARCHAR , TEXT و .. می باشد.

  • CHAR / VARCHAR – تفاوت هر دو در خصوصیت طول رشته ذخیره شده , است .

CHAR : یک رشته با طول ثابت می باشد. برای مثال در صورتی که یک فیلد (char(10 تعریف نموده و کلمه test را در آن ذخیره نمائید، آن فیلد در واقع کلمه test را به علاوه ۶ کاراکتر space (که در مجموع ۱۰ کاراکتر می گردد) در این فیلد ذخیره می نماید.

VARCHAR : یک رشته با طول متغیر می باشد. این نوع، با بیشتر دیتابیس ها همخوانی دارد. در صورتی که یک فیلد (varchar(10 ایجاد نموده و کلمه test را در آن وارد نمائید، تنها test را ذخیره می نماید. این فیلد تا ۸۰۰۰ کاراکتر را می تواند ذخیره نماید.

  • BLOB / TEXT – نوع داده BLOB در MySQL می تواند داده های باینری آبجکت های بزرگ , فایل ها و غیر را ذخیره کند . در حالی که TEXT می تواند مقدار طولانی متنی را نگهداری کند

بر اساس طول رشته به ترتیب برای BLOB و TEXT به صورت زیر دسته بندی می شوند  TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB و مشابه آن TINYTEXT , TEXT , MEDIUMTEXT, LONGTEXT.

  • BINARY / VARBINARY – تفاوت هر دو در طول رشته ذخیره سازی شده بصورت ثبات و یا متغیر است (مشابه CHAR/VARCHAR)
  • ENUM / SET – برای دریافت و ذخیره مقادیری که به صورت محدود در نوع و یا طول با هم یکسان هستند استفاده می شود.

 

نوع داده تاریخ و زمان (Date/Time)

این نوع داده برای ذخیره سازی زمان فعلی در هنگام اجرای کویری در MySQL است .

  • DATE – این نوع داده مقادیری در فرمت YYY-MM-DD را قبول می کند .
  • TIME – این نوع داده مقدار زمان فعلی را در فرمت HH:MM:SS را قبول می کند .
  • DATETIME – کاملا مشخص است که این نوع , مقادیر تاریخ و زمان را با هم در فرمت YYY-MM-DD HH:MM:SS ذخیره می کندو
  • YEAR – این نوع داده ای , می تواند ۲ عدد از سال و یا ۴ تا از کل اعداد سال رو ذخیره کند .
  • TIMESTAMP – این نوع همانند DATETIME هر دو مقدار تاریخ و زمان را ذخیره می کند و آن را به صورت تایم استمپ عددی تبدیل می کند

برای آشنایی با تاریخ و زمان در PHP کلیک کنید

 

مثال : انواع داده در MySQL

حالا , قرار است که کوئری MySQL برای ساخت جدول با انواع ویژگی ها رو بنویسیم .

کوئری SQL بالا یک جدول به نام event را با نام , زمان و وضعیت را اجیاد می کند و ساختار حدول بعد از ایجاد به صورت زیر است .

انواع داده در MySQL

حالا , یک سطر جدید از داده ها را اضافه می کنیم .

تا زمانی که مقادیر داخل کوئری INSERT به صورت صحیح مقدار دهی شده باشند , کوئری با موفقیت اجرا خواهد شد .

اگر داده هایی که قصد ذخیره سازی آن ها را در جدول مورد نظر داریم با نوع داده مشخص شده برای ذخیره سازی جدول یکسان نباشد , برای مثال اگر در ستون status به جز ACTIVE و INACTIVE مقدار دیگر ذخیره کنیم . چه اتفاقی می افتد ؟

در هنگام اجرای کوئری و ذخیره کردن مقدار TRUE در ستون status , مقدار NULL ذخیره خواهد شد.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. محمود رنجبر ۱۴ خرداد ۱۴۰۱

    سلام استاد شفیعی وقت بخیر
    من برای مقالات وبسایت از نوع text استفاده کنم ؟ و اینکه موقع نوشتن مقاله ما که نمیدونیم چند کاراکتر میشه جلوی فیلد مثلا text عدد بزاریم یا نه ؟
    با تشکر

    پاسخ
    1. حسن شفیعی ۱۴ خرداد ۱۴۰۱

      سلام ممنون.
      از نوع text محدودیت کاراکتر وجود نداره مخصوص ذخیره متن هست

      پاسخ
دوره های آموزشی