فصل پنجم :
DataType ها در SQL Server
در فصل قبل انواع
DataType های SQL Server را به اجمال نام بردیم در این فصل بطور مفصل به تشریح انها می پردازیم
Datatype ها در اس کیو ال سرور به 7 گروه ذیل تقسیم می شوند :
-
1. Exact numeric : مقادیر عددی دقیق
-
2. Approximate numeric : مقادیر عددی تقریبی
-
3. Date and time : تاریخ و ساعت
-
4. Character strings : رشته های کاراکتری
-
5. Unicode character strings : رشته های کاراکتری یونیکدی (مناسب برای فارسی)
-
6. Binary strings : رشته های باینری
-
7. Other data types : سایر انواع داده
1. Exact numeric که خود شامل انواع داده ذیل میشود :
-
Bigint
اعداد صحیح را در خود نگه میدارد و بسیار بزرگ و حجیم است . 8 بایت فضا را اشغال میکند و از -2^63 شروع شده و تا
(2^63)-1
ادامه دارد یعنی از
(9,223,372,036,854,775,808-)
تا
(9,223,372,036,854,775,807)
-
Int
اعداد صحیح از
-2^31 (2,147,483,648-)
تا
2^31-1 (2,147,483,647)
و 4 بایت را اشغال میکند
-
Smallint
اعداد صحیح از
-2^15 (32,768-)
تا
2^15-1 (32,767)
و 2 بایت فضا را اشغال میکیند
-
Tinyint
اعداد صحیح از 0 تا 255 و 1 بایت فضا اشغال میکند
-
Bit
عدد صحیح 0 یا 1یا null را در خود نگه می دارد و 1 بایت فضا اشغال میکند
-
Decimal
اعداد صحیح و اعشاری با دقت بالا و بدون گرد شدن با امکان مشخص نمودن تعداد رقم اعشار .
از
- 10^38 +1
تا
10^38 – 1
تعریف ان بصورت :
decimal [ (p[ ,s] )]
p (precision)
یا دقت که ماکزیمم تعداد ارغام را مشخص میکند(عدد کلا چند رقمیست) (قبل و بعد اعشار) . p می تواند مقداری از 1 تا 38 باشد. و مقدار پیشفرض آن 18 رقم است.
s (scale)
تعداد رقم اعشار بعد از ممیز و مقدار s می تواند مابین 0 تا p باشد
با توجه به دقت یا همان precision مقدار فضای اشغال شده متغیر است
Precision |
Storage bytes |
1 - 9 |
5 |
10-19 |
9 |
20-28 |
13 |
29-38 |
17 |
با توجه به دقت بالای این نوع داده در محاسبات کند تر از داده های دیگر است لذا در استفاده از آن باید نهایت دقت را نمود .
-
Money
نگهداری مقادیر پولی همانند دلار یورو پوند ریال و ... و محدود آن از
922,337,203,685,477.5808-
تا
922,337,203,685,477.5807
با فضای اشغالی 8 بایت و شامل 15 رقم صحیح و 4 رقم اعشار می شود
-
Smallmoney
نگهداری مقادیر پولی همانند دلار یورو پوند ریال و ... و محدود آن از
214,748.3648-
تا
214,748.3648
با فضای اشغالی 4 بایت و شامل 6 رقم صحیح و 4 رقم اعشار می شود
2. Approximate numeric : مقادیر عددی تقریبی
جهت ذخیره اعداد صحیح و اعشاری که نیاز به دقت بالا ندارند
-
float
float [ (n) ]
که n دقت و فضای اشغال شده را مشخص مینماید محدوده این نوع داده از
1.79E+308-
تا
1.79E+308
است و فضای اشغال شده با توجه به مقدار n تغییر میکند . مقدار n می تواند عددی مابین ۱ تا ۵۳ باشد و مقدار default آن ۵۳ است .
nvalue |
Precision |
Storage bytes |
1-24 |
7 digits |
4 bytes |
25-53 |
15 digits |
8 bytes |
-
real
4 بایت فضا را اشغال میکیند و محدوده آن از
3.40E + 38 -
تا
3.40E + 38
می باشد.
3. Date and Time
-
Date
تاریخ میلادی با فضای اشغالی 3 بایت
-
datetime2
تاریخ به همراه ساعت دقیق تا دقت 100 نانو ثانیه با توجه به دقت از 6 بایت تا 8 بایت
-
datetime
تاریخ به همراه ساعت با دقت کمتر تا دقت هزارم ثانیه با فضای اشغالی 8 بایت
-
Datetimeoffset
همانند datetime با لحاظ time zone و فضای 10 بایت بازای دقت 100 نانوثانیه
-
Smalldatetime
تاریخ به همراه زمان دقت ان فقط تا ثانیه می باشد و 4 بایت فضا را اشغال میکند.
-
Time
نگهداری ساعت بر اساس 24 ساعته و دقت ان تا 100 نانوثانیه می باشد فضای اشغالی 5 بایت با دقت پیشفرض 100 نانو ثانیه می باشد .
4. Character Strings
نکته : Unicode یونیکد استانداریست بین المللی برای تبادل اطلاعات چند زبانه . "یونیکد" به هر یک از حروف، کد ها یکتایی مستقل از محیط سیستم عامل و برنامه و زبان اختصاص میدهد.(کاملا مناسب برای فارسی)
-
Char
Char[(n)]
نگهداری رشته کاراکتری با طول ثابت n که از یونیکد پشتیبانی نمی کند. و n که معرف طول رشته است می تواند از 1 تا 8000 باشد .
و فضای اشغالی جهت ذخیره نیز یک بایت بازای هر کاراکتر است . بنابراین در نهایت n بایت فضا اشغال خواهد شد. (تابع تنظیمات collation )
-
varchar
varchar [ ( n | max ) ]
رشته کاراکتری با طول متغیر که از یونیکد پشتیبانی نمی کند n طول رشته را مشخص میکند و می تواند مقداری از 1 تا 8000 را داشته باشد.
MAX : تعیین میکند که ماکزیمم فضای اشغالی 2^31-1 بایت یعنی 2 گیگابایت باشد
فضای اشغالی برای ذخیره این نوع داده عبارتست از طول واقعی رشته وارد شده بعلاوه 2 بایت.
-
TEXT
ذخیره داده متنی غیر یونیکدی با ماکزیمم طول 2^31-1 . با توجه به این که در نسخه های آینده اس کیو ال سرور از این داده پشتیبانی نمی شود. لذا استفاده از آن برای طراحی دیتابیس های جدید توصیه نمی شود و شایسته است بجای آن از
VARCHAR (MAX)
استفاده شود .
5. Unicode Character Strings
نکته : Unicode یونیکد استانداریست بین المللی برای تبادل اطلاعات چند زبانه . "یونیکد" به هر یک از حروف، کد ها یکتایی مستقل از محیط سیستم عامل و برنامه و زبان اختصاص میدهد.(کاملا مناسب برای فارسی)
-
nchar
nchar[(n)]
نگهداری رشته یونیکدی با طول ثابت n که n می تواند مقداری از 1 تا 4000 رابه خود بگیرد. برای ذخیره اطلاعات یونیکدی برای هر کاراکتر احتیاج به 2 بایت فضا می باشد. بنابراین فضای اشغالی 2n خواهد بود.
-
nvarchar
nvarchar [ ( n | max ) ]
رشته کاراکتری یونیکدی با طول متغیر که n می تواند بین 1 تا 4000 باشد . max مشخص میکند که ماکزیمم فضای ذخیره داده 2^31-1 یعنی 2 گیگا بایت است.
فضای اشغال شده توسط این نوع داده عبارتست از 2 برابر طول رشته بعلاوه 2 بایت
6. Binary Strings
-
binary
binary [ ( n ) ]
دیتای باینری با طول ثابت n را درخود نگهداری میکند که n می تواند بین 1 تا 8000 باشد . فضای اشغال شده برابر با n بایت خواهد بود
-
varbinary
varbinary [ ( n | max) ]
دیتای باینری با طول متغیر که در آن n می تواند بین 1 تا 8000 باشد و max مشخص میکند که ماکزیمم فضای ذخیره 2^31-1 بایت خواهد بود . فضای اشغال شده توسط دیتا برابر است با طول واقعی دیتا بعلاوه 2 بایت
-
image
دیتای باینری با طول متغیر را در خود نگهداری میکند که طول ان می تواند بین
0 تا 2^31-1 باشد.
نکته در صورت عدم قید شده n در هرکدام از انواع دیتای شامل آن مقدار پیشفرض 1 می باشد
نکته : انواع داده text و ntext و image در نسخه های ینده اس کیو ال سرور حذف خواهند شد لذا از استفاده از آنها خود داری نمایید و بجای آنها از انواع داده
nvarchat(max)
,
varchar(max)
و
varbinary(max)
استفاده نمایید .
7. Other Data Types
-
Cursor
اشاره به یک کرسر
-
hierarchyid
معرفی یک موقعیت در یک ساختار سلسله مراتبی
-
sql_variant
ذخیره اطلاعاتی با انواع نوع داده های اس کیو ال در این نوع داده
-
table
نوع داده ایی که برای ذخیره نتیجه یک پروسه که دارای ساختار جدولی می باشد بکار میرود
-
Timestamp
این نوع داده اعداد باینری منحصر به فردی را بطور اتوماتیک تولید می کند و برای حل مسئله کابران همزمان کاربرد دارد .
-
Uniqueidentifier
یک GUID 16 بایتی ایجاد میکند
-
Xml
نوع داده ایی که برای ذخیره داده های با فرمت xml کاربرد دارد
-
spatial types
برای ذخیره داده های جغرافیایی و مختصات و اطلاعات gis ی کاربرد دارد .
بسیاری از مفاهیم درفیلم اموزشی بطور مفصل شرح داده شده اند . لذا حتما فیلم آموزشی این فصل را ببینید .
فیلم آموزشی این فصل با فصل قبلی در یک فایل موجود می باشد لذا برای مشاهده توضیحات مربوط به این فصل فیلم را از حدود دقیقه : 18 به بعد ببینید.
مفاهیم و موضوعات این فصل عبارتند از :
-
DataType ها در SQL Server