در TSQL برای ساخت جدول نیاز است که بعد از نام ستون، نوع ستون را نیز مشخص کنیم. در این مقاله ما به بررسی مهمترین انواع داده در TSQL می پردازیم. انواع داده ها را در دسته های اعداد دقیق، اعداد تقریبی، تاریخ و ساعت، رشته ها، و داده باینری بررسی خواهیم کرد. درصورتی که هنوز SQL Server را نصب نکرده اید؛ می توانید برای آموزش نصب به این لینک مراجعه کنید.

اعداد دقیق (Exact Numerics):

این دسته از انواع اعداد یا اعداد صحیح هستند و یا اگر اعشاری هستند؛ تعداد ارقام اعشاری آنها مشخص و ثابت است. در ادامه به بررسی محدوده این اعداد و حجم اشغال شده توسط آنها می پردازیم.

Tinyint : این نوع داده می تواند اعداد صحیح بین 0 تا 256 را در خود نگه دارد و 1 بایت نیز حجم اشغال می کند.

Smallint : این نوع داده می تواند اعداد صحیح بین 32768-  تا 32767 را در خود نگه دارد و 2 بایت نیز حجم اشغال می کند.

Int : این نوع داده می تواند اعداد صحیح بین 31^2- (منفی 2 به توان 31)  تا  1-31^2 را در خود نگه دارد و 4 بایت نیز حجم اشغال می کند.

Bigint : این نوع داده می تواند اعداد صحیح بین 63^2- (منفی 2 به توان 63)  تا  1-63^2 را در خود نگه دارد و 8 بایت نیز حجم اشغال می کند.

Decimal(p,s) : این نوع داده جز انواع اعشاری است اما به دلیل آنکه قسمت اعشار آن تعداد مشخصی دارد، در دسته اعداد دقیق جای میگیرد. در این نوع داده p نشان دهنده حداکثر تعداد ارقامی است که عدد می تواند داشته باشد. مثلا اگر این عدد 18 باشد یعنی تعداد ارقام سمت چپ اعشار و سمت راست اعشار جمعا 18 رقم می تواند باشد. حداکثر مقدار p می تواند 38 باشد. مقدار پیش فرض p عدد 18 است. s نیز نشان دهنده تعداد ارقام اعشاری است. بر حسب اینکه p  چقدر باشد؛ حجم اشغالی توسط این نوع داده بین 5 تا 17 بایت متغیر است.

Numeric(p,s) : این نوع داده دقیقا معادل همان Decimal(p,s) است و تفاوتی ندارد.

Bit : می تواند مقادیر صحیح 1 و یا صفر را بگیرد.  در مورد حجم اشغالی توسط این نوع داده، اگر تعداد 8 ستون و یا کمتر از نوع bit در جدول وجود داشته باشد، موتور دیتابیس همه آنها را طوری در فایل های دیتا قرار می دهد که 1 بایت فضا اشغال کنند. اگر بین 9 تا 16 ستون باشد؛ 2 بایت اشغال خواهند کرد.

اعداد تقریبی (Approximate Numerics) :

این نوع اعداد، در واقع همان اعداد اعشاری هستند با این ویژگی که تعداد ارقام اعشار آن ها ثابت نیست. در زیر به ویژگی دو نوع از این انواع داده می پردازیم.

Float(n) : عدد n بیانگر تعدا بایت های مورد استفاده برای ذخیره قسمت اعشاری است. بنابراین بر حسب اینکه  n  چقدر باشد حجم اشغالی متفاوت است. اگر n بین 1 تا 24 باشد دقت اعشار 7 رقم است و حجم اشغالی نیز 4 بایت است. اگر n  بین 25 تا 53 باشد دقت اعشار 15 رقم است و حجم اشغالی نیز 8 بایت است.

Real: در SQL Server نوع داده Real در واقع همان Float(24) است.

تاریخ و ساعت (Date and Time) :

برای نگهداری تاریخ و ساعت از انواع داده Date and Time استفاده می شود. این نوع داده بر حسب دقت زمان ثبت شده و بازه تاریخ قابل نگهداری متفاوت است.

Date : برای نگهداری تاریخ از آن استفاده می شود و می توان تاریخ های میلادی بین 01-01-0001 و 31-12-9999 را در آن نگه داشت. حجم اشغالی آن نیز 3 بایت است.

Smalldatetime : این نوع داده برای نگهداری تاریخ و ساعت استفاده می شود. بازه تاریخ میلادی آن بین 01-01-1900 تا 06-06-2079 است. نحوه نمایش آن نیز به صورت  23:50:15  27-01-2024 است. حجم اشغالی این نوع داده نیز 4 بایت است.

Datetime : این نوع داده نیز برای نگهداری تاریخ و ساعت استفاده می شود. بازه تاریخ میلادی آن بین 01-01-1753 تا 31-12-9999 است. نحوه نمایش آن نیز به صورت  23:50:15  27-01-2024  است. حجم اشغالی این نوع داده نیز 8 بایت است.

Datetime2(n) : این نوع داده نیز برای نگهداری تاریخ و ساعت استفاده می شود. بازه تاریخ میلادی آن بین 01-01-0001 تا 31-12-9999 است. نحوه نمایش آن نیز به صورت  22:40:33.5632 27-01-2024  است. عدد n نیز بیانگر تعداد ارقام اعشار برای ثانیه است که در واقع دقت زمان ثبت شده را نشان می دهد. عدد n میتواند بین 1 تا 7 باشد. اگر n  بین 1 تا 3 باشد؛ حجم اشغالی 6  بایت،  اگر n  بین 3 تا 4 باشد؛ حجم اشغالی 7 بایت و در عیر اینصورت 8 بایت است.

نوع داده رشته :

داده های رشته ای به دو دسته کلی یونیکد (Unicode) و غیر یونیکد تقسیم می شوند. یونیکد یک استاندارد رمزگذاری متن است که توسط کنسرسیوم یونیکد برای پشتیبانی از استفاده از متن نوشته شده در تمام سیستم‌های نوشتاری اصلی جهان طراحی شده است. نوع داده یونیکد برای نگهداری داده های باز زبان های غیر لاتین مثل چینی، ژاپنی، عربی و... مناسب است.

Char(n)  : داده های رشته ای با طول ثابت را می توان در این نوع داده ذخیره کرد. عدد n نشان دهنده حجم رشته است و باید عددی بین 1 تا 8000 باشد.برای زبان های لاتین عدد n نشان دهنده تعداد کاراکتر قابل ذخیره سازی نیز است. برای رشته های غیر لاتین بهتر است از این نوع داده استفاده نشود.

VarChar(n)  : داده های رشته ای مشابه  char(n) است با این تفاوت که در اینجا حجم اشغال شده ثابت نیست. به عنوان مثال اگر نوع داده ستون جدول varchar(100) باشد و متنی که در این ستون ذخیره می شود تنها نیاز به 20 بایت حجم داشته باشد؛ فقط 20 بایت اشغال می شود و سایر فضا خالی می ماند. اگر بجای n در پرانتز max نوشته شود، میتواند دیتایی با حداکثر حجم 2 گیگابایت را نگهداری کند.

Nchar(n) : مشابه char(n) است با این تفاوت که برای نگهداری داده های یونیکد، مثل متون فارسی مناسب تر است. همچنین عدد n می تواند از 1 تا 4000 باشد. حجم اشغال شده دو برابر n خواهد بود.

Nvarchar(n) : مشابه varchar(n) است با این تفاوت که برای نگهداری داده های یونیکد مثل متون فارسی مناسب تر است. همچنین عدد n می تواند از 1 تا 4000 باشد. حجم اشغال شده دو برابر n خواهد بود.. اگر بجای n در پرانتز max نوشته شود، میتواند دیتایی با حداکثر حجم 2 گیگابایت را نگهداری کند.

باینری (Binary):

در SQL Server  نوع داده باینری برای ذخیره سازی داده های باینری مثل عکس، فایلهای word و سایر فایلهای حجیم استفاده می شود. سه نوع داده باینری در SQL Server وجود دارد. در SSMS هنگام نمایش، این داده ها به صورت هگزادسیمال با پیشوند "0X" نمایش داده می شوند.

Binary(n) : در این نوع داده، حجم اشغال شده توسط داده ثابت و برابر n بایت است . n می تواند عددی بین 1 تا 8000 باشد.

VarBinary(n) : مشابه همان Binary(n) است با این تفاوت که حجم دیتای اشغال شده ثابت نمی باشد و به میزان که دیتا نیاز به فضا دارد حجم اشغال می شود.

VarBinary(Max) : مشابه VarBinary(n) است و می تواند دیتایی با حجم حداکثر دو گیکابایت را ذخیره کند.

پایان