آشنایی با انواع داده در MySQL در طراحی بهینه بانک های اطلاعاتی بسیار مهم است . دیتابیس MySQL لیست بسیار بزرگی از انواع داده ها (Data Types) را پشتیبانی می کند . و بر خلاف PHP , حتما باید در هر یک از ستون های جداول این نوع داده را مشخص کنید.
MySQL نوع داده های بسیار زیادی را پشتیبانی می کند که در سه دسته بندی اصلی تقسیم می شوند :
- نوع داده عددی (Numeric)
- نوع داده رشته ای (String)
- نوع داده تاریخ و زمان (Date/Time)
در مقاله آموزشی انواع داده در MySQL , هر سه از دسته بندی های بالا را به صورت جداگانه بررسی می کنیم.
نوع داده عددی (Numeric)
این مقدار اعداد می تواند هر نوعی مثل عدد صیحیح , اعشار , دسیمال , ۰و۱ (boolean
) و غیر باشند . همچنین لیست داده های عددی قابل پشتیبانی توسط MySQL به دسته های زیر تقسیم می شوند .
- Integers – بر اساس تعداد بایت های اختصاص یافته فضای ذخیره سازی , این نوع های عددی به به ترتیب TINYINT , SMALLINT , MEDIUMINT , INT , BIGINT تقسیم بندی می شوند .
- اعداد اعشار (fLOAT) – این دسته بندی نیز دارای دو نوع FLOAT , DOUBLE که به ترتیب نشان دهنده اعداد اشاری با درصد یکان و دهگان است .
این نوع از داده ها برای ذخیره مقادیر مشخص شده با درصد اعشار آنها استفاده می شود که مقدار بعد نقطه اعشار را پاکسازی و یک مقدار تقریبی را تولید می کنند . برای مثال , مقدار ۳٫۸۸۳۳۳ را به صورت تقریبی ۳٫۸۸ در نظر می گیرد .
- Decimal / Numeric – این داده مقدار را بصورت دقیق (نه تقریبی) ذخیره می کند.
- Binary – مشخصا مقدار ۰ و ۱ را ذخیره می کند
نوع داده رشته ای (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 برای ساخت جدول با انواع ویژگی ها رو بنویسیم .
1 |
INSERT INTO event (name, date, status) VALUES ('Birthday Party', '2013-07-06 18:30:00', 'ACTIVE'); |
کوئری SQL بالا یک جدول به نام event را با نام , زمان و وضعیت را اجیاد می کند و ساختار حدول بعد از ایجاد به صورت زیر است .
حالا , یک سطر جدید از داده ها را اضافه می کنیم .
تا زمانی که مقادیر داخل کوئری INSERT
به صورت صحیح مقدار دهی شده باشند , کوئری با موفقیت اجرا خواهد شد .
اگر داده هایی که قصد ذخیره سازی آن ها را در جدول مورد نظر داریم با نوع داده مشخص شده برای ذخیره سازی جدول یکسان نباشد , برای مثال اگر در ستون status به جز ACTIVE و INACTIVE مقدار دیگر ذخیره کنیم . چه اتفاقی می افتد ؟
1 |
INSERT INTO event (name, date, status) VALUES ('Birthday Party', '2013-07-06 18:30:00', 'TRUE'); |
در هنگام اجرای کوئری و ذخیره کردن مقدار TRUE در ستون status , مقدار NULL
ذخیره خواهد شد.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید
سلام استاد شفیعی وقت بخیر
من برای مقالات وبسایت از نوع text استفاده کنم ؟ و اینکه موقع نوشتن مقاله ما که نمیدونیم چند کاراکتر میشه جلوی فیلد مثلا text عدد بزاریم یا نه ؟
با تشکر
سلام ممنون.
از نوع text محدودیت کاراکتر وجود نداره مخصوص ذخیره متن هست