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

k2-4u

Well-Known Member
تعریف درست نوع های داده و طول آنها بسیار مهم است
و باید به آن دقت شود در حال حاضر MySQL
9 نوع عددی + یک نوع جدید (که در ورژن 5.0.3 است ) دارد

BIT : این نوع در ورژن 5.0.3 اضافه شده است
در حالت Default این نوع 1 بیت طول دارد .
و می تواند یک ورودی هم بگیرد که تا حداکثر 64 بیت جا دارد


TINYINT حداکثر طول 1 بایت
مثال حقیقی : از -128 تا 128
توجه : نوع های BOOL, BOOLEAN به صورت خود کار به این نوع تبدیل می شوند یعنی
کد:
TINYINT(1)

SMALLINT حداکثر طول 2 بایت
مثال حقیقی : از -32768 تا 32768

MEDIUMINT حداکثر طول 3 بایت
مثال حقیقی : از -8388608 تا 8388608

INTEGER , INT حداکثر طول 4 بایت
مثال حقیقی : از -2147483648 تا 2147483648

BIGINT حداکثر طول 8 بایت
مثال حقیقی : از -9223372036854775808 تا 9223372036854775808

DECIMAL(M,D) , NUMERIC(M,D) متغییر است (در ادامه توضیح داده شده است )
مثال حقیقی : این نوع 2 ورودی میگیرد که شامل طول عدد از برای مثال
کد:
DECIMAL(10,1);
به معنای 1 تا 10 است


و اعداد اعشاری

FLOAT حداکثر طول 4 بایت
مانند نوع INT با این تفاوت که می تواند اعشاری باشد

DOUBLE حداکثر طول 8 بایت
مانند نوع BIGINT با این تفاوت که می تواند اعشاری باشد


نوع های TINYINT , MEDIUMINT , INT , BIGINT می توانند یک ورودی بگیرند
که حداکثر طول مقدارشان را مشخص می کند برای مثال
کد:
CREATE TABLE tb1(
col1 TINYINT(1),
col2 INT(20)
);


نوع های DECIMAL , DOUBLE , FOLAT می توانند 2 ورودی بگیرند که شامل محدوده شروع و پایان عدد است
برای مثال
کد:
CREATE TABLE tb1(
co1l DOUBLE(10.5,5.4)
co12 FOLAT(11,4),
col3 DECIMAL(20,4)
);


برای انواع اعداد 2 سویچ مهم وجود دارد

UNSIGNED : به معنای اینکه نمی تواند عدد منفی باشد در صورتی که این مقدار را وارد نکنید به صورت
پیشفرض SIGNED می شود . پس بهتر است در صورتی که با اعداد منفی سر و کار ندارین این سویچ را فعال کنید

ZEROFILL : با فعال کردن این سویچ . به اندازه طول مجاز . قبل از عدد صفر گذاشته می شود

----------------------------------------------------------------

مشخص کردن طول بسیار مهم است برای مثال برای ستونی که مربوط به سن است باید
کد:
CREATE TABLE tb1(
age TINYINT(2) UNSIGNED
);
حداکثر طول 2 باشد . تا بیشتر از 99 نشود
و همینطور که میبینید .سویچ UNSIGNED فعال است
تا منفی وارد نشود
 
آخرین ویرایش:

k2-4u

Well-Known Member
قسمت سوم : نوع داده رشته

تعریف نوع و طول رشته نیز مانند . اعداد مهم است
در حال حاضر MySQL
از 14 نوع داده رشته پشتیبانی می کند

CHAR تا حداکثر 255 کارکتر .
بهتر است داده های زیر 4 کارکتر را به این نوع اختصاص دهید . فرق این نوع با VARCHAR
این است که VARCHAR وابسته به مقدار اطلاعاتی که در خود دارد طول خود را عوض می کند
اما CHAR دارای طول ثابت است
به این نوع داده حتما باید طول بدهید . برای مثال
کد:
CHAR(3)
مقدار CHAR در حقیقت برابر است با CHARACTER. NATIONAL CHAR در استاندارد SQL


BINARY : مانند CHAR ولی به صورت دودوی (باینری)

VARCHAR طول متغییر و قابل تغییر تا حداکثر 65,535 بایت
به این نوع داده حتما باید طول بدهید . برای مثال
کد:
VARCHAR(243)
این نوع داده دارای یک قابلیت خاص است و آن این است که . جدا از تعریف طول
بسته به مقداری که اطلاعات در آن قرار دارد فضا اشغال می کند

VARBINARY : مانند VARCHAR ولی به صورت دودوی (باینری)

TINYTEXT از 1 تا حداکثر 2 به توان 8 بایت
که می شود 255 بایت

TEXT از 2 تا حداکثر 2 به توان 16 بایت
که می شود 65,535 بایت

MEDIUMTEXT از 3 تا حداکثر 2 به توان 24 بایت
که می شود 16,777,215 بایت

LONGTEXT از 4 تا حداکثر 2 به توان 32 بایت
که می شود 4,294,967,295 بایت یا 4 گیگابایت

TINYBLOB مانند TINYTEX ولی به صورت باینری

BLOB مانند TEXT ولی به صورت باینری

MEDIUMBLOB مانند MEDIUMTEXT ولی به صورت باینری

LONGBLOB مانند LONGTEXT ولی به صورت باینری

ENUM یک یا دو بایت . حداکثر 65,535 مقدار

SET یک , 2 , 3 ,4 یا 8 بایت , حداکثر 64 عضو


شما می توانید با اضافه کردن BINARY . به نوع های CHAR, VARCHAR, TEXT, ENUM, SET آنها را تبدیل به
باینری کنید . برای مثال
کد:
CREATE TABLE tb1(
col TEXT BINARY
col2 ENUM(1,2,3) BINARY
);
 

Mohammadreza

Well-Known Member
پس اينطوري مي شه استدلال كرد كه استفاده از varchar بسي بهينه تر از استفاده از char هست ،
درسته ؟
 

k2-4u

Well-Known Member
خب هر چیزی کاربرد خودش رو داره . به هر حال اگر طول varchar شما کم باشه .اتوماتیک به char تبدیل میشه
 

جدیدترین ارسال ها

بالا