انواع داده و متغیر در 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 های مختلف است. |
table | . |