Design

انواع داده در Microsoft SQL Server – بخش اول

بحث نوع داده در SQL Server به مانند تمامی پایگاه های داده و زبان های برنامه نویسی بحثی مهم و کلیدی است. درSQL Server تمامی فیلدها، متغیرها و پارامترها دارای یک نوع داده می باشند.

اما چرا نوع داده مهم است؟ نوع داده مشخص می کند که هر فیلد، متغیر یا پارامتری، چه مقادیری را می تواند در خود نگهداری کند، چه بازه ای از آن نوع داده را با چه دقتی پوشش می دهد و چه میزان فضا را به خود اختصاص می دهد.

انواع داده در SQL Server به طور کلی در دسته بندی زیر قرار می گیرد:

  1. اعداد دقیق
    1. اعداد صحیح
    2. اعداد اعشاری
    3. اعداد ارزی
    4. اعداد باینری
  2. اعداد تقریبی
  3. کاراکتری
    1. غیر یونیکد
    2. یونیکد
  4. تاریخی
  5. رشته های باینری

همچنین برخی از انواع داده فضای بسیار زیادی را به خود اختصاص می دهند. بر همین اساس دو گروه از انواع داده را نیز داریم که به شرح زیر می باشند:

  • مقادیر بزرگ
  • اشیا بزرگ

در این سری مقالات به شرح انواع داده خواهیم پرداخت:

قسمت اول: انواع داده عددی

اعداد صحیح

انواع اعداد در ریاضیات
انواع عدد

در SQL Server، کوچکترین واحد نگهداری اطلاعات بایت (byte) است. هر بایت از 8 بیت تشکیل شده که تنها می توانند مقادیر 0 یا 1 را به خود اختصاص بدهند.

نمایش بیت و بایت
بیت و بایت

پس یک بایت می تواند بازه ای از اعداد (00000000) تا (11111111) را در مبنای 2 پوشش بدهد. یعنی اعداد بین 0 تا 255 در مبنای دهدی. SQL Server نام این نوع داده را tinyint گذاشته است.

اگر به جای یک بایت از دو بایت استفاده کنیم چه می شود؟ دو بایت یعنی 16 بیت. بنابراین به  2^16 حالت مختلف می توان، صفر ها و یک ها را در کنار هم قرار داد. SQL Server برای اینکه بتواند اعداد منفی را هم پوشش بدهد یک بیت را به علامت و 15 بیت را به اعداد اختصاص می دهد. بنابراین بازه عددی زیر را می توان پوشش داد:

– (2^15) ~ (2^15) -1

جزییات نوع داده smallint
جزییات نوع داده smallint

نام این نوع داده smallint می باشد.

بر همین اساس می توانیم دیگر اعضای خانواده نوع داده عدد صحیح را بررسی کنیم:

اعداد صحیح
اعداد صحیح

اگر عدد استفاده شده با هر یک از این انواع داده، خارج از بازه مشخص شده باشد؛ با خطای arithmetic overflow مواجه می شویم.

اعداد اعشاری:

اعداد اعشاری
اعداد اعشاری

از دو نوع داده ای decimal(p, s) و numeric(p, s) برای نگهداری اعداد اعشاری استفاده می شود. این دو نوع داده مترادف یکدیگر هستند و می توان از هر یک به جای دیگری استفاده کرد.

  • پارامتر p بیانگر تعداد رقم هایی است که یک عدد اعشاری می تواند در خود جای دهد. منظور جمع تعداد رقم های دو طرف اعشار می باشد.
  • پارامتر p به طور پیش فرض برابر 18 می باشد.
  • مقدار p می تواند در بازه ی (0 <= p <= 38) قرار بگیرد.
  • پارامتر s نشان دهنده حداکثر تعداد رقم اعشاری است که می توانیم داشته باشیم.
  • s به طور پیش فرض برابر 0 می باشد.
  • مقدار s می تواند در بازه ی (0 <= s <= p) قرار بگیرد.

فضای ذخیره این دو نوع داده بستگی به اندازه p دارد و به صورت پلکانی و طبق جدول زیر مشخص می شود:

نوع داده decimal و numeric
نوع داده decimal و numeric

اگر قسمت صحیح عدد استفاده شده با هر یک از این انواع داده، بزرگتر از p باشد؛ با خطای arithmetic overflow مواجه می شویم. ولی اگر قسمت اعشاری آن بزرگتر از s باشد؛ تعداد رقم اعشاری به s محدود می شود و عدد به سمت پایین گرد می شود.

برای درک بهتر به مثال زیر توجه کنید:

نوع داده decimal و numeric
نوع داده decimal و numeric

اعداد ارزی:

نوع داده ارزی
نوع داده ارزی

دقت اعداد ارزی تا 4 رقم اعشار می باشد.

اعداد باینری:

روشن/ خاموش
روشن/ خاموش

نوع داده bit تنها عضو این خانواده است. bit یک عدد صحیح است و مقادیر آن می تواند 0 یا 1 یا NULL باشد. اگر در یک جدول تعداد ستون های نوع bit کمتر یا مساوی 8 باشد، ستون ها در قالب یک byte نگهداری می شوند. اگر تعداد این ستون ها بین 9 تا 16 عدد باشد، از 2 byte فضا استفاده می شود و …

اعداد تقریبی

آیکن تقریب

یکی از روش های نمایش اعداد، استفاده از فرمت ممیز شناور می باشد. در این روش هر عدد (n) به صورت

m × be نمایش داده می شود:

  • عدد  n = number
  • مانتیس یا ارقام معنی دار m = mantissa
  • پایه b = base
  • توانe = exponent

پایه توان معمولا یکی از اعداد 2، 10 یا 16 می باشد. در طی سال‌ها روش‌های گوناگونی از نمایش ممیز شناور در رایانه‌ها استفاده شده‌است. نماد علمی یکی از این روش هاست که پایه توان (b) را 10 در نظر می گیرد. از دهه ی ۱۹۹۰ میلادی به بعد، نمایش معمول بر اساس استاندارد IEEE 754 تعیین می‌شود که منطبق بر نماد علمی می باشد. در این نماد برای راحتی نمایش از e یا E به جای “ضربدر 10 به توان ِ” استفاده می کنند.

استفاده از نماد E در ماشین حساب

در ادامه مثال هایی از این استاندارد را مشاهده می کنید:

استفاده از نماد علمی در نمایش اعداد
استفاده از نماد علمی در نمایش اعداد

در SQL Server دو نوع داده (float(n و real از روش نماد علمی برای ذخیره سازی اعداد استفاده می کند.

  • پارامتر n اختیاری است و مشخص کننده تعداد بیت هایی است که برای ذخیره سازی ارقام مانتیس استفاده می شود.
  • پارامتر n عددی بین 1 تا 53 می باشد که اگر مشخص نشود، 53 در نظر گرفته می شود.
  • نوع داده real مترادف (float(24 هست.
نوع داده float و real
نوع داده float و real

این نوع داده در بسیاری اوقات اعداد به صورت واقعی ذخیره نمی کند و تقریب بسیار نزدیکی از آن ها را نگهداری می کند. به همین دلیل استفاده از این انواع داده در مواردی که دقت بالای عددی مورد نیاز است توصیه نمی شود.

در مقاله بعدی، به مابقی انواع داده در Microsoft SQL Server خواهیم پرداخت.

برچسب ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن