SQL Server از انواع مختلف داده (Data Types) برای ذخیره و مدیریت اطلاعات استفاده میکند. هر ستون، متغیر محلی، عبارت و پارامتر در SQL Server دارای نوع داده خاص خود است که مشخص میکند چه نوع دادهای میتواند ذخیره کند. این انواع داده به طور کلی به چهار دسته تقسیم میشوند: عددی (Numeric)، رشتهای (String)، زمانی (Date & Time) و انواع دادههای ویژه (Special Data Types).
نوع داده (Data Type) به SQL Server این امکان را میدهد که نه تنها از نوع و اندازه دادههای ورودی مطلع شود، بلکه روش ذخیرهسازی و پردازش آنها را نیز تعیین کند. برای مثال، نوع داده عددی میتواند شامل int
، float
، decimal
و غیره باشد که هر یک از آنها برای ذخیره اعداد با ویژگیهای خاص مورد استفاده قرار میگیرند. دادههای رشتهای مانند varchar
و nvarchar
برای ذخیره متن به کار میروند. نوع دادههای زمانی مانند datetime
و date
نیز برای مدیریت و ذخیره اطلاعات مربوط به تاریخ و زمان استفاده میشوند. برای بهینه سازی عملکرد و ذخیره سازی داده ها در SQL Server، انتخاب نوع داده مناسب برای هر ستون یا متغیر ضروری است. در ادامه به معرفی و بررسی دقیق تر انواع داده های پشتیبانی شده در SQL Server خواهیم پرداخت.
انواع داده های رشته ای در SQL Server : از Char تا Text
در SQL Server، دادههای رشتهای (Character String) به انواع مختلفی تقسیم میشوند که هر یک برای مدیریت و ذخیره سازی متون و کاراکترها به کار میروند. این دادهها به صورت Non-Unicode ذخیره میشوند، به این معنی که از یک بایت برای هر کاراکتر استفاده میکنند. در ادامه به بررسی این انواع دادهها میپردازیم:
- Char(n) : این نوع داده دارای طول ثابت است و مقدار
n
تعیین میکند که چند بایت داده میتواند در آن ذخیره شود.n
میتواند عددی بین 1 تا 8000 باشد. در صورتی که طول داده واردشده کمتر ازn
باشد، فضاهای خالی باspace
از سمت راست پر میشوند. این فضاها هنگام مشاهده داده نادیده گرفته میشوند، اما در پایگاه داده ذخیره میشوند. - Varchar(n) : این نوع داده دارای طول متغیر است و میتواند از 0 تا
n
کاراکتر (با مقدارn
بین 1 تا 8000) را ذخیره کند. اندازه ذخیرهسازی این نوع داده، برابر با طول واقعی داده واردشده به علاوه 2 بایت است. در مقایسه باchar
، این نوع داده فقط به اندازه کاراکترهای واقعی واردشده فضا اشغال میکند. - Varchar(max) : این نوع داده نیز دارای طول متغیر است و میتواند حداکثر تا 2 گیگابایت داده را ذخیره کند. مانند
varchar(n)
، اندازه ذخیرهسازی آن برابر با طول واقعی داده واردشده به علاوه 2 بایت است. این نوع داده به عنوان “large-value data type” شناخته میشود و برای ذخیره مقادیر بزرگتر از 8000 کاراکتر استفاده میشود. - Text : نوع داده
text
برای ذخیره رشتههای بسیار طولانی استفاده میشود و میتواند حداکثر تا 2 گیگابایت داده را ذخیره کند. این نوع داده نیز به صورت Non-Unicode در پایگاه داده ذخیره میشود و برای ذخیرهسازی متون بزرگتر از 8000 کاراکتر کاربرد دارد.
آشنایی با انواع دادههای یونیکد در SQL Server : از Nchar تا Ntext
- Nchar(n) : این نوع داده دارای طول ثابت است و هر کاراکتر با استفاده از دو بایت ذخیره میشود. مقدار
n
نشاندهنده تعداد کاراکترهایی است که میتوانند در این نوع داده ذخیره شوند و مقدار آن میتواند بین 1 تا 4000 باشد. حتی اگر رشته واردشده کوتاهتر از مقدار مشخصشده باشد، فضای ذخیرهسازی با کاراکترهای خالی (space) پر میشود. از این نوع داده برای ذخیره متون با طول ثابت که نیاز به پشتیبانی از کاراکترهای یونیکد دارند، استفاده میشود. - Nvarchar(n) : این نوع داده دارای طول متغیر است و هر کاراکتر با استفاده از دو بایت ذخیره میشود. مقدار
n
نشاندهنده حداکثر تعداد کاراکترهایی است که میتوانند در این نوع داده ذخیره شوند و میتواند بین 1 تا 4000 باشد. برخلافNchar(n)
, درNvarchar(n)
فضای ذخیرهسازی تنها به اندازه تعداد کاراکترهای واقعی مورد استفاده قرار میگیرد، به علاوه 2 بایت اضافی. این نوع داده برای ذخیره متونی که طول آنها متغیر است، مناسب است. - Ntext : نوع داده
Ntext
نیز برای ذخیره متون با طول متغیر استفاده میشود و حداکثر میتواند 2 گیگابایت داده را ذخیره کند. این نوع داده بیشتر برای مقادیر متنی بزرگتر از 8000 کاراکتر استفاده میشود. هر کاراکتر درNtext
با استفاده از دو بایت ذخیره میشود و حجم ذخیرهسازی بر حسب تعداد کاراکترها و نوع داده واردشده متفاوت است.
معرفی کامل انواع داده های عددی : از Int تا Decimal
- Int (عدد صحیح) :
این نوع داده میتواند اعداد صحیح را در بازهی -2,147,483,648 تا 2,147,483,647 ذخیره کند و از 4 بایت فضای حافظه استفاده میکند. این نوع داده به طور گسترده برای ذخیرهسازی اعداد صحیح در پایگاه دادهها مورد استفاده قرار میگیرد. - Bigint (عدد صحیح بزرگ) :
نوع دادهی Bigint برای ذخیرهسازی اعداد صحیح بسیار بزرگ استفاده میشود و بازهی -9,223,372,036,854,775,808 تا 9,223,372,036,854,775,807 را پوشش میدهد. این نوع داده از 8 بایت حافظه استفاده میکند و برای مواقعی که اعداد خارج از محدودهی Int هستند، کاربرد دارد. - Smallint (عدد صحیح کوچک) :
Smallint نوع دادهای است که اعداد صحیح کوچکتر را ذخیره میکند و بازهی -32,768 تا 32,767 را در بر میگیرد. این نوع داده 2 بایت حافظه مصرف میکند و برای مقادیری که نیازی به استفاده از Int نیست، مناسب است. - Tinyint (عدد صحیح بسیار کوچک) :
Tinyint برای ذخیره اعداد صحیح در بازه 0 تا 255 استفاده میشود و فقط 1 بایت حافظه نیاز دارد. این نوع داده برای مواردی که فقط به ذخیره اعداد کوچک نیاز است، مانند شمارشها، مناسب است. - Bit :
این نوع داده فقط 0 یا 1 را ذخیره میکند و برای ذخیره دادههای بولی (true/false) یا boolean کاربرد دارد. همچنین، میتواند null پذیر باشد. Bit یکی از کوچکترین واحدهای ذخیرهسازی در SQL Server است. - Numeric و Decimal :
این دو نوع داده برای ذخیرهسازی اعداد اعشاری با دقت بالا استفاده میشوند. در اینجا، دقت (precision) و مقیاس (scale) برای مشخص کردن تعداد کل ارقام و تعداد ارقام بعد از ممیز تعیین میشود. این نوع دادهها برای ذخیرهسازی دقیق مقادیر پولی و محاسبات حساس به دقت بسیار مناسب هستند. - Money :
این نوع داده برای ذخیرهسازی مقادیر پولی طراحی شده است و میتواند مقادیر از -922,337,203,685,477.5808 تا 922,337,203,685,477.5807 را با دقت 4 رقم اعشار ذخیره کند. اندازهی ذخیرهسازی این نوع داده 8 بایت است و برای ذخیرهسازی دادههای مالی مانند قیمتها و مبالغ پولی بسیار مناسب است. - Smallmoney :
Smallmoney مشابه Money است اما برای ذخیرهسازی مقادیر کوچکتر استفاده میشود. محدودهی آن از -214,748.3648 تا 214,748.3647 است و از 4 بایت حافظه استفاده میکند.
رسی انواع داده های تاریخ و زمان در SQL Server
- Date:
این نوع داده برای ذخیره تاریخ بدون اطلاعات مربوط به زمان استفاده میشود. فرمت ذخیرهسازی آن به صورتYYYY-MM-DD
است که به ترتیب سال، ماه و روز را نشان میدهد. مقدار پیشفرض این نوع داده،1900-01-01
است و برای ذخیرهسازی به 3 بایت فضا نیاز دارد. - Time:
نوع داده Time برای ذخیره زمان بدون تاریخ استفاده میشود. فرمت ذخیرهسازی آنhh:mm:ss[.nnnnnnn]
است، که ساعت، دقیقه، ثانیه و بخش اعشاری ثانیه را شامل میشود. این نوع داده از 5 بایت فضا استفاده کرده و دقت آن تا 100 نانوثانیه است. - Datetime2:
این نوع داده ترکیبی از تاریخ و زمان است. فرمت آنYYYY-MM-DD hh:mm:ss[.fractional seconds]
است و میتواند تاریخها را از0001-01-01
تا9999-12-31
و زمان را با دقت تا 100 نانوثانیه ذخیره کند. اندازه فضای مورد نیاز برای ذخیرهسازی آن بین 6 تا 8 بایت است. - Datetime:
این نوع داده برای ذخیره تاریخ و زمان به طور همزمان استفاده میشود. بازه تاریخ بین1753-01-01
تا9999-12-31
و زمان بین00:00:00
تا23:59:59.997
است. برای ذخیرهسازی به 8 بایت فضا نیاز دارد. - Smalldatetime:
این نوع داده مشابه Datetime است اما با دقت و بازهی محدودتر. تاریخهای بین1900-01-01
تا2079-06-06
و زمانهای بین00:00:00
تا23:59:59
را با دقت یک دقیقه ذخیره میکند. این نوع داده به 4 بایت فضا نیاز دارد. - Datetimeoffset:
این نوع داده برای ذخیره تاریخ و زمان به همراه جبران منطقه زمانی (Time Zone Offset) استفاده میشود. این داده میتواند تاریخهای بین0001-01-01
تا9999-12-31
و زمانهای بین00:00:00
تا23:59:59.9999999
را ذخیره کند. جبران منطقه زمانی میتواند بین-14:00
تا+14:00
باشد. این نوع داده به 10 بایت فضا نیاز دارد.
سخن پایانی
Data Types در SQL Server، نوع دادهای هر ستون یا متغیر را مشخص میکند و تعیین میکند که چه نوع دادهای را میتواند ذخیره کند. این نوعها شامل دادههای عددی مانند Int و Bigint، رشتههای متنی مانند Char و Varchar، و همچنین دادههای زمانی مانند Date و Datetime هستند. انتخاب مناسب Data Type نه تنها بر کارایی بلکه بر بهینهسازی حافظه نیز تأثیر میگذارد. بنابراین، آشنایی با انواع مختلف Data Type و کاربردهای آنها در SQL Server برای مدیریت بهینه پایگاههای داده ضروری است.