MySQL انواع مختلفی از داده ها را پشتیبانی میکند که در چند گروه قرار میگیرند:

- اعداد (numeric)

- تاریخ و زمان (date and time)

- رشته ها (string: شامل character و byte)

(MySQL ساز و کارهایی برای استفاده از داده های فضایی (۳بعدی) نیز فراهم آورده که برای آشنایی بیشتر به اینجا مراجعه کنید ).


۱. نوع دادهٔ عددی (NUMBER TYPES) :


* ‌BIT : این نوع داده از MySQL 5.0.3 اضافه شده است و به صورت (BIT(M مورد استفاده قرار میگیرد و میتواند فیلدی شامل M بیت را در خود جای دهد ،  M میتواند عددی بین 1 تا 64 را بپذیرد ، (مقدار پیشفرض M مقدار 1 میباشد). این نوع داده تقریبا فضایی برابر با M+7)/8) بایت اشغال میکند.

میتوان بصورت مستقیم یک رشتهٔ باینری را به فیلدی از جنس BIT نسبت داد ، بصورت زیر:


Integer (عدد صحیح) : در MySQL میتوان از Data Type های مختلفی برای نگهداری اعداد صحیح (int) استفاده نمود که بسته به ماکسیمم مقداری که میخواهیم ذخیره کنیم میتوان از یکی از انواع زیر استفاده کرد:

محدوده اعداد مجاز
(بصورت بدون علامت)
محدوده اعداد مجاز
(بصورت علامت دار)
مقدار فضای اشغالی
(بر حسب بایت)
Data Type
0
تا
255
128-
تا
127
1TINYINT
0
تا
65535
32768-
تا
32767
2SMALLINT
0
تا
16777215
8388608-
 تا
8388607
3MEDIUMINT
0
تا
4294967295
2147483648-
تا
2147483647
4INT
0
تا
18446744073709551615
9223372036854775808-
تا
9223372036854775807
8BIGINT

- اگر هنگام تعریف فیلد از کلمه کلیدی UNSIGNED استفاده کنیم میتوانیم مقادیر بدون علامت را درون فیلد بریزیم ، ولی بطور پشفرض فیلد ها مقادیر علامت دار (SIGNED) را میپذیرند.

- میتوان تعداد ارقامی که به نوع دادهٔ Integer نسبت داده میشود رو محدود نمود ،‌مثلا وقتی ما (INT(M تعریف میکنیم ،‌ یعنی فیلدی از جنس INT داریم که M رقم را در خود جای میدهد.

- وقتی از کلمه کلیدی ZEROFILL استفاده میکنیم ، اگر مقدار نسبت داده شده به فیلد از تعداد ارقام مشخص شده کمتر باشد ، با اضافه کردن 0 به سمت راست عدد ، آن مقدار را هم اندازه تعداد ارقام مشخص شده میکند ، در مثال زیر ما دو فیلد از جنس INT تعریف میکنیم با تعداد ارقام 8 ، و در یکی از آنها از ZEROFILL استفاده میکنیم و در یکی استفاده نمیکنیم ، تا فرق آنها مشخص شود:

- اگر از کلمه کلیدی NOT NULL هنگام تعریف فیلد استفاده کنیم ، یعنی این فیلد را نمیتوان خالی (NULL) رها کرد و حتما باید مقداری به آن داده شود.

- اگر از کلمه کلیدی AUTO_INCREMENT هنگام تعریف فیلد استفاده کنیم ،‌ این فیلد بصورت خودکار و افزایشی پر میشود (غالبا برای ساخت کلید مورد استفاده قرار میگیرد).

- هنگامی که از کلمه کلیدی UNIQUE استفاده میکنیم ،‌مشخص میکنیم که این فیلد نمیتواند مقدار تکراری داشته باشد (مثلا فیلد کلید).


* Boolean یا Bool : این نوع داده ای همان (TINYINT(1 میباشد که برای نگهداری دو مقدار True و یا False مورد استفاده قرار میگیرد که مقدار صفر برابر با False و مقدار غیر صفر برابر True میباشد. این نوع داده ، یک بایت فضا اشغال میکند.


* SERIAL معادل BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE میباشد.


* DECIMAL : از این نوع داده ای برای نگهداری اعداد اعشاری با ممیز ثابت استفاده میشود. این نوع داده برای هر ۹ رقم ، ۴ بایت فضا اشغال میکند.


* FLOAT و DOUBLE : از این دو نوع داده ای برای ذخیره اعداد اعشاری با ممیز شناور استفاده میشود. نوع داده Double ، هشت بایت و نوع داده Float ، چهار بایت فضا اشغال میکنند. اگر از نوع Float بصورت (FLOAT(P استفاده کنیم ، اگر مقدار P بین ۰ تا ۲۴ باشد ، ۴ بایت و اگر بین ۲۵ تا ۵۳ باشد ، ۸ بایت فضا اشغال میکند.

- مطالعه این مقاله برای آشنایی بیشتر با نحوه ذخیره سازی اعداد اعشاری در MySQL ، خارج از لطف نیست.


منبع