انواع داده و متغیر در SQL

9 / 10 از 22 کاربر

انواع داده و متغیر در 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 .
sqlاس کیو الانواع داده در اسکیوالانواع داده رشته ای در اسکیوالsql data typesداده های حرفی در اس کیو الانواع داده یونیکد در اسکیوالانواع داده باینری در اسکیوالانواع داده عددی در اس کیو الانواع داده تاریخ در اس کیوالانواع دیگر داده ها در اسکیوالنوع داده char در sqlنوع داده varchar در sqlنوع داده varchar max در sqlنوع داده text در sqlنوع داده nchar در sqlنوع داده nvarchar در sqlنوع داده nvarchar max در sqlنوع داده ntext در sqlنوع داده bit در sqlنوع داده binary در sqlنوع داده varbinary در sqlنوع داده varbinary max در sqlنوع داده image در sqlنوع داده tinyint در sqlنوع داده smallint در sqlنوع داده int در sqlنوع داده bigint در sqlنوع داده decimal در sqlنوع داده numeric در sqlنوع داده smallmoney در sqlنوع داده money در sqlنوع داده float در sqlنوع داده real در sqlنوع داده datetime در sqlنوع داده smalldatetime در sqlنوع داده date در sqlنوع داده time در sqlنوع داده sql variant در sqlنوع داده uniqueidentifier در sqlنوع داده xml در sqlنوع داده cursor در sqlنوع داده table در sqlآموزش نوع های داده در اسکیوالمقاله ی انواع داده در اس کیو ال بصورت کاملمتغیرهای عددی و رشته ای در sqlمتغیرهای رشته ای در اسکیوالانواع متغیر تاریخ و ساعت در sqlمتغیرها در sqlمتغیر های باینری در اسکیوالمتغیر های در اسکیوال به چه صورت است؟
:
29 2
باسپاس از مطلب خیلی خوبتون
س :
14 2
بسیار عالی
نام : تشکر در حد لالیگا
15 2
اقا دمتون گرم خیلی جامع و بی نظیر و بدرد بخور منبع جامع و عالی تشکر دستتون درد نکنه :)
saeed : سوال
6 2
سلام، نوع داده مناسب برای قیمت ( ریال یا تومان ) کدوم بهتره ؟ ممنون میشم، جواب رو ایمیل کنید. با تشکر.
مدیریت : پاسخ
6 2
با سلام. decimal
حميد : تشكر
5 1
مطالبي كه تو سايت قرار داديد فوق العاده است و راحت ميشه اونها رو درك كرد، ممنون از شما
f : سوال
5 1
باسلام من هیچ چیزی راجع به sglنمیدونم ایا میشه از این طریق یاد گرفت
شاهین : سوال
6 1
سلام / برای ذخیره سازی کد اقتصادی از چه نوع متغییری استفاده کنیم بهتره ؟ یا سپاس
زانیار نادم : تشکر
2 0
مرسی واقعا عالی
مبینا : سوال
4 0
سلام و مرسی از وبلاگ خوبتون منسه سوال داشتم از خدمتتون میخواستم بدونم علت گذاشتن دو داده decimal وnumeric به خاطرچی هست؟ اگه تفاوتی ندارن پس چرا دو تا نوع داده گذاشتن ممنون میشم هر چه سریع تر پاسخ بدید
y.alizadeh : اشکال
1 0
با تشکر از مطلب خوبتون. یک نکته: bigint می‌تواند اعداد بین مثبت و منفی ۴ میلیارد میلیارد (یعنی ۴ در ده به توان هجده) را در خود ذخیره کند.
عنوان نظر :
نام شما :
ایمیل :
تلفن تماس :
*
نویسنده : بهاره شکری
تاریخ انتشار : 20/05/1392
تعداد بازدید : 31061