انواع دادهها در SQL Server چیست؟
نوع داده (Data Type) در SQL Server مشخص میکند که یک ستون، متغیر یا پارامتر چه نوع دادهای را میتواند ذخیره کند، مانند اعداد صحیح، رشتههای کاراکتری، دادههای باینری، تاریخ و زمان و غیره. انتخاب نوع داده مناسب برای هر ستون بسیار مهم است تا هم فضای ذخیرهسازی بهینه شود و هم عملکرد پایگاه داده بهبود یابد.
دستهبندی انواع دادهها در SQL Server
1. انواع داده عددی (Numeric Data Types)
این دسته برای ذخیره اعداد صحیح و اعشاری استفاده میشود:
نوع داده | حجم حافظه | |
---|---|---|
int | اعداد صحیح از -2,147,483,648 تا 2,147,483,647 | 4 بایت |
tinyint | اعداد صحیح از 0 تا 255 | 1 بایت |
smallint | اعداد صحیح از -32,768 تا 32,767 | 2 بایت |
bigint | اعداد صحیح بسیار بزرگ از -2^63 تا 2^63-1 | 8 بایت |
money | اعداد مالی از -922,337,203,685,477.5808 تا 922,337,203,685,477.5807 | 8 بایت |
smallmoney | اعداد مالی کوچکتر از money | 4 بایت |
decimal(p,s) و numeric(p,s) | اعداد اعشاری با دقت و مقیاس مشخص (حداکثر 38 رقم) | 5 تا 17 بایت |
float(n) | اعداد اعشاری با دقت متغیر | 4 یا 8 بایت بسته به n |
real | معادل float(24) | 4 بایت |
2. انواع داده رشتهای و کاراکتری (Character and String Data Types)
این نوع دادهها برای ذخیره متن و رشتهها به کار میروند:
نوع داده | توضیح | حجم حافظه |
---|---|---|
char(n) | رشته با طول ثابت n (1 تا 8000 کاراکتر) | n بایت |
varchar(n) | رشته با طول متغیر تا n کاراکتر | طول واقعی رشته + 2 بایت |
varchar(max) | رشته با طول متغیر تا 2^31-1 کاراکتر | طول واقعی رشته + 2 بایت |
nchar(n) | رشته یونیکد با طول ثابت n | 2n بایت |
nvarchar(n) | رشته یونیکد با طول متغیر تا n کاراکتر | 2 × طول واقعی رشته + 2 بایت |
nvarchar(max) | رشته یونیکد با طول متغیر تا 2^31-1 کاراکتر | 2 × طول واقعی رشته + 2 بایت |
تفاوت Char و Varchar:
Char: طول ثابت، فضای حافظه همیشه برابر n است حتی اگر رشته کوتاهتر باشد.
Varchar: طول متغیر، فقط به اندازه رشته حافظه اختصاص میدهد و بهینهتر است.
تفاوت Varchar و Nvarchar:
Varchar: برای ذخیره کاراکترهای غیر یونیکد (مثلاً انگلیسی).
Nvarchar: برای ذخیره کاراکترهای یونیکد (مثلاً فارسی، عربی) و فضای بیشتری مصرف میکند (دو برابر)
3. انواع داده باینری (Binary Data Types)
برای ذخیره دادههای باینری مانند تصاویر، فایلها و دادههای رمزنگاری شده:
نوع داده | توضیح | حجم حافظه |
---|---|---|
bit | ذخیره یک بیت (0 یا 1) | 1 بیت در ستونهای 8 بیتی |
binary(n) | داده باینری با طول ثابت n | n بایت |
varbinary(n) | داده باینری با طول متغیر | طول واقعی + 2 بایت |
varbinary(max) | داده باینری با طول بسیار زیاد | طول واقعی + 2 بایت |
4. انواع داده تاریخ و زمان (Date and Time Data Types)
برای ذخیره تاریخ و زمان با دقتهای مختلف:
نوع داده | توضیح | حجم حافظه | مثال |
---|---|---|---|
date | فقط تاریخ از 0001-01-01 تا 9999-12-31 | 3 بایت | 2016-08-19 |
datetime | تاریخ و زمان از 1753-01-01 تا 9999-12-31 | 8 بایت | 2016-08-19 10:15:45 |
datetime2 | تاریخ و زمان با دقت بیشتر | 6 تا 8 بایت | 2016-08-19 10:15:45.0110112 |
datetimeoffset | شامل تاریخ، زمان و اختلاف زمانی منطقه | 8 تا 10 بایت | 2016-08-19 10:15:45 +05:30 |
smalldatetime | تاریخ و زمان با بازه محدودتر | 4 بایت | 2016-08-19 10:15:00 |
time | فقط زمان با دقت نانوثانیه | 3 تا 5 بایت | 10:15:45.0110136 |
5. انواع داده ویژه و دیگر
sql_variant: برای ذخیره انواع داده مختلف در یک ستون یا متغیر.
uniqueidentifier: ذخیره شناسههای یکتا (GUID).
xml: ذخیره دادههای XML.
cursor، table، rowversion و timestamp: انواع داده خاص برای مدیریت دادهها و تراکنشها.
نکات کلیدی و بهترین شیوهها
اگر دادههای یونیکد نمیخواهید ذخیره کنید، از varchar به جای nvarchar استفاده کنید تا فضای کمتری مصرف شود.
برای رشتههای با طول متغیر از varchar یا nvarchar استفاده کنید و از char یا nchar فقط برای رشتههای با طول ثابت بهره ببرید.
برای دادههای مالی از money یا decimal استفاده کنید که دقت بالا دارند.
از انواع دادههای منسوخ شده مانند text، ntext و image استفاده نکنید و به جای آنها از varchar(max)، nvarchar(max) و varbinary(max) بهره ببرید.
در انتخاب نوع داده دقت کنید تا هم فضای ذخیرهسازی بهینه شود و هم کارایی کوئریها افزایش یابد.
دیدگاهتان را بنویسید