با سلام و عرض خسته نباشید خدمت شما همراهان روکسو! به شما تبریک می گویم که تا این قسمت، یعنی قسمت آخر آموزش زبان SQL، همراه ما بوده اید. در این قسمت می خواهیم در مورد انواع داده (datatype) در زبان SQL صحبت کنیم. در طی این دوره چندین بار به datatype ها اشاره کرده ایم و به شما قول داده ایم که آن ها را در یک قسمت جداگانه معرفی خواهیم کرد. این قسمت همان قسمت است!
به نظر شما Datatype یک ستون در یک جدول چه کاری انجام می دهد؟ datatype های یک ستون، تعیین می کنند که آن ستون می تواند چه نوع مقادیری را در خود ذخیره کند؛ به طور مثال آیا می تواند مقادیر عددی بگیرد؟ آیا می تواند مقادیر حروفی بگیرد؟ آگر مقادیر عددی قبول می کند آیا فقط اعداد صحیح را قبول می کند و یا اعداد اعشاری را نیز می گیرد؟ و صد ها سوال دیگر ... .
همانطور که می دانید هر ستون از یک جدول باید دو فاکتور مشخص داشته باشد:
شما به عنوان توسعه دهنده وظیفه دارید هنگام ساخت یک جدول برای پایگاه داده، نوع داده ی تک تک ستون هایش را مشخص کنید یا بهتر بگویم بدون تعیین datatype اجازه ی ساخت هیچ جدولی به شما داده نمی شود مگر از مقادیر پیش فرض استفاده کرده باشیم.
هشدار: هر پایگاه داده، انواع داده ی خاص خود را دارد و حتی اگر اسم های datatype آن با پایگاه داده ی شما یکی باشند، باز هم ممکن است جزئیات آن متفاوت باشند بنابراین قبل از هر کاری باید به documentation پایگاه داده ی خود مراجعه کنید.
از آنجایی که datatype ها نیاز به مثال ندارند و تنها آشنایی با آن ها ضروری است، آن ها را برایتان به صورت لیست وارد توضیح می دهم و هر گاه که با موردی برخوردید و نتوانستید معنی اش را به خاطر بیاورید می توانید به همین صفحه مراجعه کنید و آن را پیدا کنید. datatype هایی که در جدول های زیر آورده ایم دستورات مخصوص پایگاه داده ی MySQL هستند و ممکن است روی Access یا SQL Server یا ... خرابی به بار بیاورند.
من سعی کرده ام برای مرتب تر شدن بحث، انواع داده ها را به صورت جدولی در بیاورم و هر کجا که نیاز به توضیح بود پایین آن جدول توضیحاتی ارائه خواهم کرد.
نوع داده (datatype) | توضیحات |
CHAR(size) |
یک رشته با طول مشخص و ثابت را نگه میدارد. این رشته می تواند شامل حروف، اعداد و کاراکترهای خاص باشد. طول رشته در پرانتز مشخص شده و تا 255 کاراکتر را ساپورت می کند. |
VARCHAR(size) |
یک رشته با طول متغیر را نگه می دارد که می تواند شامل اعداد، حروف و کاراکترهای خاص باشد. حداکثر تعداد کاراکتر برای این نوع داده 255 کاراکتر است. 1 |
TINYTEXT |
به معنی «متن کوتاه» است و رشته ای با حداکثر تعداد 255 کاراکتر را نگه می دارد. |
TEXT |
به معنی «متن» است و رشته ای به طول 65,535 بایت را ذخیره می کند. |
BLOB |
مخفف Binary Large OBjects و به معنی «اشیاء بزرگ دو دویی» است. می تواند تا 65,535 بایت داده را ذخیره کند. |
MEDIUMTEXT |
به معنی «متن متوسط» است و رشته ای تا 16,777,215 عدد کاراکتر را قبول می کند. |
MEDIUMBLOB |
به معنی «BLOB های متوسط» است و تا 16,777,215 بایت اطلاعات را ذخیره می کند. |
LONGTEXT |
به معنی «متن طولانی» است و رشته ای تا 4,294,967,295 عدد کاراکتر را ذخیره می کند. |
LONGBLOB |
به معنی «BLOB های بزرگ» است و تا 4,294,967,295 بایت اطلاعات را ذخیره می کند. |
ENUM(x,y,z,etc.) |
به شما اجازه می دهد لیستی از مقادیر ممکن را تعیین کنید. شما می توانید تا 65535 عدد مقدار مختلف را در یک لیست ENUM ذخیره کنید. اگر مقداری وارد ستون شود که در لیست ما ذکر نشده باشد، به جای آن یک مقدار خالی وارد خواهد شد. 2 |
SET |
دقیقا مانند ENUM است با این تفاوت که می تواند تا 64 عدد گزینه برای لیست مقادیر مجاز داشته باشد. همچنین می تواند بیشتر از یک انتخاب را ذخیره کند. |
نکات شماره گذاری شده در جدول بالا:
1- اگر در پرانتز عددی بیشتر از 255 قرار دهید، نوع داده به طور خودکار تبدیل به TEXT خواهد شد.
2- ترتیب گزینه های این لیست بر همان اساسی است که شما آن ها را وارد می کنید. همچنین مقادیر ممکن باید با این فرمت تعیین شوند: ('ENUM('X','Y','Z
نوع داده (datatype) | توضیحات |
TINYINT(size) |
به معنای «عدد صحیح بسیار کوچک» است و از 128- تا 127 را به طور عادی شامل می شود. همچنین می تواند از 0 تا 255 را به صورت UNSIGNED1 شامل شود. شما می توانید حداکثر تعداد ارقام را در پرانتزِ جلوی آن مشخص کنید. |
SMALLINT(size) |
به معنای «عدد صحیح کوچک» است و از 32768- تا 32767 را به طور عادی شامل می شود. همچنین می تواند از 0 تا 65535 را به صورت UNSIGNED1 شامل شود. شما می توانید حداکثر تعداد ارقام را در پرانتزِ جلوی آن مشخص کنید. |
MEDIUMINT(size) |
به معنای «عدد صحیح متوسط» است و از 8388608- تا 8388607 را به طور عادی شامل می شود. همچنین می تواند از 0 تا 16777215 را به صورت UNSIGNED1 شامل شود. شما می توانید حداکثر تعداد ارقام را در پرانتزِ جلوی آن مشخص کنید. |
INT(size) |
مخفف integer و به معنای «عدد صحیح» است. از 2147483648- تا 2147483647 را به طور عادی شامل شده و همچنین می تواند از 0 تا 4294967295 را به صورت UNSIGNED1 شامل شود. شما می توانید حداکثر تعداد ارقام را در پرانتزِ جلوی آن مشخص کنید. |
BIGINT(size) |
به معنای «عدد صحیح بزرگ» است و از 9223372036854775808- تا 9223372036854775807 را به طور عادی شامل می شود. همچنین می تواند از 0 تا 18446744073709551615 را به صورت UNSIGNED1 شامل شود. شما می توانید حداکثر تعداد ارقام را در پرانتزِ جلوی آن مشخص کنید. |
FLOAT(size,d) |
یک عدد اعشاری کوچک است. حداکثر تعداد ارقام صحیح را به جای size و حداکثر تعداد ارقام اعشار را به جای d قرار دهید. |
DOUBLE(size,d) |
یک عدد اعشاری بزرگ است. حداکثر تعداد ارقام صحیح را به جای size و حداکثر تعداد ارقام اعشار را به جای d قرار دهید. |
DECIMAL(size,d) |
همان DOUBLE است که به صورت یک رشته ذخیره می شود تا قسمت اعشاری آن ثابت بماند. حداکثر تعداد ارقام صحیح را به جای size و حداکثر تعداد ارقام اعشار را به جای d قرار دهید. |
نکات شماره گذاری شده در جدول بالا:
1- اعداد صحیح یک گزینه ی اضافی به نام UNSIGNED دارند. در حالت عادی اعداد صحیح از مقادیر منفی به مقادیر مثبت می روند اما اگر UNSIGNED را به آن اضافه کنید عدد شروع کننده صفر خواهد بود و دیگر شامل اعداد منفی نخواهد شد.
من سعی کرده ام برای مرتب تر شدن بحث، انواع داده ها را به صورت جدولی در بیاورم و هر کجا که نیاز به توضیح بود پایین آن جدول توضیحاتی ارائه خواهم کرد.
نوع داده (datatype) | توضیحات |
DATE() |
شامل یک تاریخ می شود1 که در این قالب نوشته خواهد شد:
|
DATETIME() |
شامل ترکیبی از تاریخ و زمان3 است که از قالب زیر پیروی می کند:
|
TIMESTAMP() |
به زبان ساده یک timestamp است؛ مقادیر TIMESTAMP به صورت «ثانیه های گذری شده از Unix epoch (یعنی '00:00:00 1970-01-01' UTC) ذخیره می شوند و دارای قالب زیر هستند:
|
TIME() |
یک زمان ساده5 را نگه می دارد: HH:MI:SS |
YEAR() |
سال را به صورت دو رقمی و یا چهار رقمی ذخیره می کند.6 |
نکات شماره گذاری شده در جدول بالا:
1- طیف پشتیبانی شده در این نوع داده از '01-01-1000' تا '31-12-999' است.
2- قالب YYYY-MM-DD
به ترتیب به معنی زیر است:
3- طیف پشتیبانی شده در این نوع داده از '00:00:00 01-01-1000' تا '23:59:59 31-12-999' است.
4- قالب YYYY-MM-DD HH:MI:SS
دقیقا مانند قالب قبلی است با این تفاوت که:
5- طیف پشتیبانی شده در این نوع داده از '838:59:59-' تا '838:59:59' است.
6- مقادیر پشتیبانی شده در حالت چهار رقمی، سال های 1901 الی 2155 و مقادیر پشتیبانی شده در حالت دو رقمی، سال های 70 تا 69 (سال های 1970 تا 2069) را شامل می شوند.
برای مشاهده ی انواع دیگر datatype ها در پایگاه های داده ی دیگر می توانید در اینترنت جستجو کنید و یا به وب سایت ماکروسافت بروید:
این دوره نیز به پایان رسید و امیدوارم شما از آن استفاده ی کافی را برده باشید. توجه داشته باشید که هنگام کار با پایگاه های داده به شکل بی مهابا عمل نکنید و تمرکزتان را روی بازار کار نگذارید. بهتر است ابتدا سعی کنید با تمامی مفاهیم پایگاه های داده آشنا شده و چم و خم کار را به صورت کامل یاد بگیرید، سپس به سمت بازار کار بروید. این حرف را از آن جهت می گویم که حملات در دنیای وب زیاد هستند (مخصوصا روی پایگاه های داده - به خاطر قیمت بالایشان در بازار سیاه) و شما نباید با ندانم کاری خود یا عجله داشتن برای وارد شدن به بازار کار، کسب و کار یا تجارت دیگران را نابود کنید.
بعد از آشنایی با این دوره به شما پیشنهاد می دهم به آموزش کار با MySQL نیز نگاهی بیندازید و سپس دوره هایی مانند دوره ی آموزشی PDO در روکسو (که شامل آموزش مبارزه با SQL Injection می باشد) را نیز مطالعه کنید.
امیدوارم از این سری آموزشی استفاده ی کافی را برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.