انواع داده ها در MySQL
در MySQL سه نوع اصلی داده وجود دارد: نوع متنی، نوع عددی و نوع تارخ/زمان
داده های متنی
نوع داده | توضیحات |
---|---|
CHAR(size) | رشته ای با طول ثابت (می تواند شامل حروف، اعداد و کاراکترهای خاص باشد) |
VARCHAR(size) | رشته ای با طول متغیر (می تواند شامل حروف، اعداد و کاراکترهای خاص باشد) حداکثر طول رشته در پرانتز مشخص می شود و حداکثر 255 کاراکتر است توجه: اگر رشته ای با طول بیش از 255 کاراکتر را در آن قرار دهید، به نوع TEXT تبدیل خواهد شد |
TINYTEXT | رشته ای با طول حداکثر 255 کاراکتر |
TEXT | رشته ای با طول حداکثر 65,535 کاراکتر |
BLOB | داده باینتری با طول حداکثر 65,535 بایت (Binary Large OBject) |
MEDIUMTEXT | رشته ای با طول حداکثر 16,777,215 کاراکتر |
MEDIUMBLOB | داده باینتری با طول حداکثر 16,777,215 بایت (Binary Large OBject) |
LONGTEXT | رشته ای با طول حداکثر 4,294,967,295 کاراکتر |
LONGBLOB | داده باینتری با طول حداکثر 4,294,967,295 بایت (Binary Large OBject) |
ENUM(x,y,z,etc.) | فقط یکی از مقادیری که در پرانتز لیست شده است، اجازه ورود دارد. می توانید حداکثر 65535 کاراکتر در ENUM لیست کنید اگر مقداری که در لیست وجود ندارد، درج شود، یک blank یا فضای خالی بجای آن در نظر گرفته می شود |
SET | مانند ENUM است با این تفاوت که، حداکثر 64 آیتم می توانید لیست کنید و همچنین بیشتر از یک انتخاب دارید |
داده های عددی
نوع داده | توضیحات | فضا |
---|---|---|
TINYINT(size) | محدوده اعداد مجاز به صورت علامت دار: 128- تا 127 | 1 byte |
SMALLINT(size) | محدوده اعداد مجاز به صورت علامت دار: 32768- تا 32767 | 2 byte |
MEDIUMINT(size) | محدوده اعداد مجاز به صورت علامت دار: 8388608- تا 8388607 | 3 byte |
INT(size) | محدوده اعداد مجاز به صورت علامت دار: 2147483648- تا 2147483647 | 4 byte |
BIGINT(size) | محدوده اعداد مجاز به صورت علامت دار: 9223372036854775808- تا 9223372036854775807 | 8 byte |
FLOAT(size,d) | از این دو نوع داده برای ذخیره اعداد اعشاری با ممیز شناور استفاده می شود | 4 یا 8 byte |
DOUBLE(size,d) | از این دو نوع داده برای ذخیره اعداد اعشاری با ممیز شناور استفاده می شود پارامتر size حداکثر تعداد ارقام و پارمتر d حداکثر تعداد ارقام سمت راست ممیز اعشار را مشخص می کند | 8 byte |
DECIMAL(size,d) | از این نوع داده برای نگهداری اعداد اعشاری با ممیز ثابت استفاده می شود. این نوع داده برای هر ۹ رقم ، ۴ بایت فضا اشغال می کند |
- اگر هنگام تعریف فیلد از کلمه کلیدی UNSIGNED استفاده کنیم میتوانیم مقادیر بدون علامت را درون فیلد بریزیم، ولی بطور پشفرض فیلد ها مقادیر علامت دار (SIGNED) را می پذیرند.
- میتوان تعداد ارقامی که به نوع دادهٔ Integer نسبت داده می شود را محدود نمود، به عنوان مثال: (INT(5 یعنی فیلدی از جنس INT که 5 رقم را در خود جای می دهد.
- وقتی از کلمه کلیدی ZEROFILL استفاده می کنیم، اگر مقدار نسبت داده شده به فیلد از تعداد ارقام مشخص شده کمتر باشد، با اضافه کردن 0 به سمت چپ عدد، آن مقدار را هم اندازه تعداد ارقام مشخص شده می کند.
داده های تاریخ/زمان
نوع داده | توضیحات | فضا |
---|---|---|
DATE() | این نوع داده برای نگهداری تاریخ (بدون ساعت)، با غالب 'YYYY-MM-DD' استفاده می شود | 3 byte |
DATETIME() | این نوع داده برای نگهداری زمان (هم تاریخ و هم ساعت بصورت تفکیک شده و بدون توجه به منطقه زمانی)، با غالب 'YYYY-MM-DD HH:MM:SS' استفاده می شود | 8 byte |
TIMESTAMP() | هر زمان سطری ایجاد یا تغییر داده می شود، یک عدد یکتا بصورت اتوکاتیک در این فیلد ذخیره می شود. داده timestamp وابسته به ساعت داخلی سیستم می باشد و با زمان واقعی مطابقت ندارد. هر جدولی ممکن است یک timestamp متفاوت داشته باشد. به عبارت دیگر در این فیلد ۸ بایتی، تایم لحظهای اجرای دستور نگهداری میشود و کاربرد آن کنترل بروزرسانی همزمان (Concurrency) اطلاعات توسط چند کاربر است. البته در تعداد رکوردهای پایین به کار نمیآید و بیشتر زمانی مورد نیاز است که تعداد رکوردها خیلی زیاد باشد مثلاً ۱۰۰ میلیون رکورد! توجه: محدوده زمانی بصورت '00:00:00 01-01-1000' UTC تا '23:59:59 31-12-9999' UTC می باشد. یعنی هنگام ذخیره سازی زمان ، آن را از زمان محلی (Time Zone) سیستم به زمان UTC (گیرینویچ) تبدیل می کند و هنگام بازیابی ، آنرا از UTC به زمان محلی سیستم تبدیل می کند. | 4 byte |
TIME() | این نوع داده برای نگهداری زمان (فقط ساعت ، بدون تاریخ)، با غالب 'HH:MM:SS' یا 'HHH:MM:SS' استفاده می شود | 3 byte |
YEAR() | ذخیره سال به فرمت: دو رقمی یا چهار رقمی | 1 byte |