معرفی انواع داده در MySQL دیتابیس
نوع داده عددی
تعریف درست نوع های داده و طول آنها بسیار مهم است
و باید به آن دقت شود در حال حاضر MySQL
9 نوع عددی + یک نوع جدید (که در ورژن 5.0.3 است ) دارد
BIT : این نوع در ورژن 5.0.3 اضافه شده است
در حالت Default این نوع 1 بیت طول دارد .
و می تواند یک ورودی هم بگیرد که تا حداکثر 64 بیت جا دارد
TINYINT حداکثر طول 1 بایت
مثال حقیقی : از -128 تا 127
توجه : نوع های BOOL, BOOLEAN به صورت خود کار به این نوع تبدیل می شوند یعنی
TINYINT(1)
=====================معرفی انواع داده در MySQL دیتابیس====================
SMALLINT حداکثر طول 2 بایت
مثال حقیقی : از -32768 تا 32767
MEDIUMINT حداکثر طول 3 بایت
مثال حقیقی : از -8388608 تا 8388607
INTEGER , INT حداکثر طول 4 بایت
مثال حقیقی : از -2147483648 تا 2147483647
BIGINT حداکثر طول 8 بایت
مثال حقیقی : از -9223372036854775808 تا 9223372036854775807
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)
);
=====================معرفی انواع داده در MySQL دیتابیس====================
نوع های 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 فعال است
تا منفی وارد نشود
=====================معرفی انواع داده در MySQL دیتابیس====================
نوع داده رشته
تعریف نوع و طول رشته نیز مانند . اعداد مهم است
در حال حاضر 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
);
انواع داده و متغیر در SQL
در این قسمت از آموزش sql ، انواع داده در اسکیوال را شرح میدهیم.
انواع داده رشته ای در اسکیوال : Character strings
این نوع فیلد برای نگهداری عبارات و یا حروف ASCII میباشد. در این نوع فیلدها، برای نگهداری هر حرف، یک بایت اشغال میشود و لذا نیاز به Collation برای تعیین زبان اطلاعات میباشد.
نوع داده | شرح |
char(n) | اطلاعات متنی با طول ثابت از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره میکنند. |
varchar(n) | اطلاعات متنی با طول متغیر از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره میکنند. فرق بین Char و VarChar در این است که در Char، طول رشته ثابت است. یعنی اگر یک فیلد را از نوع Char(20) معرفی کرده و در آن کلمه Orion را قرار دهیم، عین ۲۰ حرف استفاده خواهد شد. یعنی ۵ کاراکتر اول را کلمه مربوطه اشغال کرده و ۱۵ کاراکتر باقیمانده، Blank خواهند بود. اما در VarChar اینگونه نیست.. |
varchar(max) | اطلاعات از ۱ تا ۲ مگا حرف ذخیره میشود و مکانیزم آن هم بصورت پوینتری میباشد. |
text | اطلاعات از ۱ تا ۲ مگا حرف ذخیره میشود. این نوع داده همانند Image و VarBinary(MAX) در خود رکورد ذخیره نمیشوند. بلکه توسط یک پوینتر به جای دیگری اشاره میکنند. این نوع داده در SQL 10 حذف شده و بجای آنها از VarChar(MAX) استفاده میشود.. |
انواع داده یونیکد در اسکیوال : Unicode types
این نوع فیلدها برای نگهداری متون Unicode بوده و برای نگهداری هر حرف، از دو بایت استفاده میشود. پس مسلماً نسبت به نوع دادههای کاراکتری، حافظه بیشتری را به خود اختصاص میدهد و در ضمن کمی هم کندتر است. این نوع فیلدها، احتیاج به Collation ندارند.
نوع داده | شرح |
nchar(n) | در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ حرف با طول ثابت ذخیره میشود. |
nvarchar(n) | در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ بایت با طول متغیر ذخیره میشود. |
nvarchar(max) | در این نوع داده از ۱ تا ۱ مگا حرف ذخیره میشود. مکانیزم آن هم بصورت Pointer میباشد. |
ntext | در این نوع داده، از ۱ تا ۱ مگا حرف ذخیره میشود. مکانیزم آن هم بصورت Pointer . |
انواع داده باینری در اسکیوال : Binary types
این نوع فیلدها برای نگهداری اطلاعات بصورت بایناری مانند تصاویر مناسب هستند
نوع داده | شرح |
bit | یک فیلد دو بیتی است و میتواند ۰ و ۱ و Null را ذخیره کند.کاربرد آن در زمانهایی است که دو حالت وجود داشته باشد. مانند جنسیت زن و مرد. |
binary(n) | این نوع فیلدها، از ۱ تا ۸۰۰۰ بایت را در خود جای میدهند. |
varbinary(n) | این نوع فیلدها هم از ۱ تا ۸۰۰۰ بایت را در خود جای میدهند. (متغیر). |
varbinary(max) | این نوع Datatype در SQL 2005 معرفی شده و تقریباً همانند دادههای Image هستند. |
image | این نوع فیلدها از ۱ تا حداکثر ۲ گیگابایت را میتوانند ذخیره کنند. فرق این نوع دادهها با دو نوع قبلی این است که در دو نوع قبلی، اطلاعات در خود رکورد ثبت میشوند ولی در این نوع دادهها، اطلاعات در یک Page ذخیره میشود و به جایش در رکورد، یک پوینتر ۱۶ بایتی ذخیره میشود. این نوع فیلدها در SQL 10 حذف شده و به جایش باید از VarBinary استفاده کرد. |
انواع داده عددی در اس کیو ال : Number types
این نوع فیلد برای نگهداری اعداد صحیح و بدون اعشار استفاده میگردد و دارای ۴ نوع به شرح زیر است. در ضمن این نوع فیلدها رتبه یک سرعت در نوع فیلدهای عددی را دارد.
نوع داده | شرح |
tinyint | یک بایت را اشغال میکند و میتواند از ۰ تا ۲۵۵ را در خود ذخیره کند. |
smallint | یک عدد دو بایتی است و میتواند از ۳۲۷۶۷ منفی تا ۳۲۷۶۷ مثبت را در خود ذخیره کند. |
int | یک عدد چهار بایتی است که میتواند اعداد بین مثبت و منفی ۲ میلیارد را در خود ذخیره کند. |
bigint | یک عدد ۸ بایتی است که میتواند اعداد بین مثبت و منفی ۴ میلیارد را در خود ذخیره کند. |
decimal(p,s) | این نوع فیلد برای نگهداری اعداد اعشاری با تعداد اعشار مشخص استفاده میگردد. این نوع فیلدها بسیار کند بوده و استفاده از آنها توصیه نمیگردد. که در آن Precision به معنای تعداد کل رقمهای عدد و Scale تعداد ارقام اعشار را مشخص میکند. مثلاً اگر فیلدری بصورت Deciaml(6,2) تعریف شود، حداکثر آن برابر ۹۹۹۹٫۹۹ میباشد.. |
numeric(p,s) | . |
smallmoney | یک عدد ۴ بایتی است که میتواند ۶ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند.. |
money | یک عدد ۸ بایتی است که میتواند ۱۵ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند.. |
float(n) | یک عدد ۸ بایتی که اعداد بصورت توانی از ۱۰ نگهداری میشوند. . |
real | یک عدد ۴ بایتی است که اعداد بصورت توانی از ۱۰ نگهداری میشوند.. |
انواع داده تاریخ در اس کیوال :Date types
این نوع فیلدها برای نگهداری تاریخ میلادی و ساعت استفاده میشود و برای تاریخ شمسی کاربرد ندارد.
نوع داده | شرح |
datetime | این نوع فیلد، ۸ بایتی است و از سال ۱۷۰۰ تا ۹۹۹۹ را با دقت هزارم ثانیه ذخیره میکند.. |
datetime2 | . |
smalldatetime | این نوع فیلد، ۴ بایتی است و از سال ۱۹۰۰ تا ۲۰۷۹ را با دقت هزارم ثانیه ذخیره میکند.. |
date | این نوع فیلدها برای نگهداری تاریخ میلادی استفاده میشود. |
time | این نوع فیلدها برای نگهداری ساعت استفاده میشود. |
datetimeoffset | |
timestamp |
انواع دیگر داده ها در sql: Other data types
نوع داده | شرح |
sql_variant | این نوع فیلد برای نگهداری انواع داده استفاده میشود و نوع آن با توجه به اولین مقداری که در آن قرار میگیرد تعیین خواهد شد. چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشارهگر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری میشود. استفاده از این نوع فیلد، توصیه نمیگردد.. |
uniqueidentifier | .این فیلد ۱۶ بایتی، به ما کدی Unique یا تک میدهد که به اصطلاح GUID میگویند. یکی از کاربردهای آن در Replication است. |
xml | این فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده میشود و شامل انواع MetaData های مختلف است. |
cursor | این فیلد مربوط به کنترل Cursor است . |
table | . |