أنواع بيانات SQL Server مع الأمثلة

⚡ ملخص ذكي

تحدد أنواع بيانات SQL Server نوع القيمة التي يمكن أن يخزنها عمود أو متغير، مثل عدد صحيح، أو عدد عشري، أو حرف، أو تاريخ، أو عدد ثنائي. ويضمن اختيار النوع الصحيح صحة البيانات واستخدام الذاكرة بكفاءة.

  • 🔢 رقمي دقيق: تقوم الأنواع bigint و int و smallint و tinyint و bit و decimal و numeric و money و smallmoney بتخزين الأعداد الصحيحة والأعداد ذات الفاصلة الثابتة.
  • 〰️ القيمة العددية التقريبية: يخزن كل من float و real قيم الفاصلة العائمة التقريبية المستخدمة في الحسابات العلمية.
  • 📅 التاريخ و الوقت: تقوم أنواع البيانات datetime و smalldatetime و date و time و datetimeoffset و datetime2 بتخزين القيم الزمنية.
  • 🔤 الأحرف واليونيكود: تحتوي أنواع البيانات char و varchar و text على نص؛ بينما تحتوي أنواع البيانات nchar و nvarchar و ntext على نص Unicode.
  • 🖼️ الثنائي وغيره: تخزن الأنواع binary و varbinary و image بيانات البايت؛ بينما يغطي cursor و xml و uniqueidentifier الاحتياجات الخاصة.
  • 🧠 Choosing Wiseلاي: يؤدي مطابقة كل عمود مع أصغر نوع مناسب إلى تحسين كفاءة التخزين وسلامة البيانات.

أنواع بيانات SQL Server مع الأمثلة

ما هو نوع البيانات؟

نوع بيانات في مرض التصلب العصبي المتعدد مزود خدمة يُعرَّف بأنه نوع البيانات التي يمكن لأي عمود أو متغير تخزينها. وهو نوع البيانات التي يحتويها الكائن، مثل الأعداد الصحيحة أو الأحرف أو السلاسل النصية. عند إنشاء أي جدول or متغيربالإضافة إلى تحديد الاسم، يمكنك أيضًا تحديد نوع البيانات التي سيتم تخزينها.

كيفية استخدام نوع البيانات MS SQL

يجب تحديد نوع البيانات التي يمكن تخزينها في العمود أو المتغير مسبقًا. كما أن تحديد نوع البيانات يمنع المستخدم من إدخال أي بيانات غير متوقعة أو غير صالحة.

يمكنك الاستفادة بكفاءة من الذاكرة عن طريق تعيين نوع بيانات مناسب لمتغير أو عمود، مما يخصص فقط مقدار ذاكرة النظام المطلوبة لبيانات ذلك العمود.

توفر لغة MS SQL مجموعة واسعة من أنواع البيانات الأساسية في SQL لتلبية احتياجات المستخدم، مثل التاريخ، والبيانات الثنائية، والصور، والمزيد.

لماذا استخدام أنواع البيانات؟

لنأخذ مثالاً على صفحة تسجيل بسيطة لتطبيق موقع ويب. الحقول الثلاثة المدخلة هي: الاسم الأول، واسم العائلة، ورقم الهاتف.

وهنا تجدر الإشارة إلى أنه في السيناريوهات الواقعية:

  • سيكون "الاسم الأول/اسم العائلة" دائمًا أبجديًا.
  • ستكون كلمة "جهة الاتصال" دائمًا رقمية.

يوضح المثال أدناه هذه الحقول في نموذج التسجيل.

مثال على نموذج التسجيل يحدد الاسم الأول والأخير كأحرف ومعلومات الاتصال كعدد صحيح

من الصورة أعلاه، من المنطقي تعريف "الاسم الأول/الاسم الأخير" كحرف و"جهة الاتصال" كعدد صحيح.

من الواضح أنه في أي تطبيق، تحتوي جميع الحقول على نوع أو آخر من البيانات، على سبيل المثال البيانات الرقمية، والأبجدية، والتاريخ، وغيرها الكثير.

تجدر الإشارة أيضًا إلى أن أنواع البيانات المختلفة تتطلب ذاكرة مختلفة. لذا، من الأنسب تعريف العمود أو المتغير بنوع البيانات التي سيحتويها، وذلك لتحقيق الاستخدام الأمثل للذاكرة.

نوع البيانات المتوفرة في MS SQL Server

فيما يلي قائمة بأنواع البيانات في خادم MS SQL. يدعم خادم MS SQL الفئات التالية من أنواع البيانات:

  • رقمية دقيقة
  • عددية تقريبية
  • التاريخ والوقت
  • سلاسل الأحرف
  • سلاسل أحرف Unicode
  • سلاسل ثنائية
  • أنواع البيانات الأخرى

يُصنّف الرسم البياني أدناه أنواع بيانات خادم MS SQL إلى هذه الفئات.

مجموعة الرسم التخطيطيping أنواع بيانات MS SQL Server إلى فئاتها السبع

أنواع البيانات الرقمية الدقيقة في SQL

يحتوي نوع البيانات Exact numeric على تسعة أنواع فرعية في SQL Server. يخزن كل نوع منها أعدادًا صحيحة أو أعدادًا ذات فاصلة ثابتة ضمن نطاق محدد.

نوع البيانات الوصف الحد الأدنى الحد الأعلى ذاكرة
BIGINT يخزن الأعداد الصحيحة في النطاق المحدد −2^63 (−9,223,372,036,854,775,808) 2^63−1 (9,223,372,036,854,775,807) بايت 8
مادبا يخزن الأعداد الصحيحة في النطاق المحدد −2^31 (−2,147,483,648) 2^31−1 (2,147,483,647) بايت 4
com.miniint يخزن الأعداد الصحيحة في النطاق المحدد −2^15 (−32,768) 2^15−1 (32,767) بايت 2
الدقيقة يخزن الأعداد الصحيحة في النطاق المحدد 0 255 بايت 1
بت يمكن أن يستغرق الأمر قيمًا 0 أو 1 أو NULL. 0 1 عمود 1 بايت / 8 بت
عدد عشري يستخدم للأرقام ذات المقياس والدقة الثابتة −10^38+1 10^38−1 5 إلى 17 بايت
الرقمية يستخدم للأرقام ذات المقياس والدقة الثابتة −10^38+1 10^38−1 5 إلى 17 بايت
مال تُستخدم للبيانات النقدية -922,337,203,685,477.5808 922,337,203,685,477.5807+ بايت 8
مبلغ صغير تُستخدم للبيانات النقدية -214,478.3648 214,478.3647+ بايت 4

أنواع البيانات الرقمية الدقيقة في SQL Server مع أمثلة:

الاستعلام:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

الإخراج:

2

بناء الجملة:

Decimal (P,S)

هنا، P هي الدقة و S هي المقياس.

الاستعلام:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

الإخراج:

2.31

أنواع البيانات الرقمية التقريبية في SQL

تشمل فئة البيانات العددية التقريبية في لغة SQL القيم العشرية والقيم الحقيقية. وتُستخدم هذه الأنواع من البيانات في الغالب في الحسابات العلمية.

نوع البيانات الوصف الحد الأدنى الحد الأعلى ذاكرة دقة
تعويم (ن) يستخدم لرقم الدقة العائمة -1.79E+308 1.79E + 308 يعتمد على قيمة ن 15 أرقام
حقيقي يستخدم لرقم الدقة العائمة -3.40E+38 3.40E + 38 بايت 4 7 أرقام

يستخدم نوع البيانات العشري الصيغة التالية:

Syntax:  FLOAT [(n)]

هنا، يمثل n عدد البتات المستخدمة لتخزين الجزء الكسري من العدد العشري بالصيغة العلمية. القيمة الافتراضية لـ n هي 53.

عند تعريف نوع بيانات مثل float، يجب أن تكون قيمة n بين 1 و 53. يتعامل SQL Server مع n كواحدة من قيمتين محتملتين: إذا كان 1<=n<=24، فسيتم التعامل مع n على أنها 24؛ إذا كان 25<=n<=53، فسيتم التعامل مع n على أنها 53.

مثال للاستعلام:

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

الإخراج:

22.1234

أنواع بيانات التاريخ والوقت في SQL

تخزن هذه الفئة بيانات من نوع التاريخ والوقت.

نوع البيانات الوصف حجم التخزين الدقة المدى المنخفض النطاق العلوي
التاريخ والوقت يستخدم لتحديد التاريخ والوقت من 1 يناير 1753 إلى 31 ديسمبر 9999. تبلغ دقته 3.33 مللي ثانية. بايت 8 تم التقريب إلى زيادات .000، .003، .007 1753-01-01 9999-12-31
com.smalldatetime يستخدم لتحديد التاريخ والوقت من 1 يناير 1900 إلى 6 يونيو 2079. دقته دقيقة واحدة. 4 بايت، ثابتة 1 دقيقة 1900-01-01 2079-06-06
تاريخ يُستخدم لتخزين تاريخ واحد فقط من 1 يناير 0001 إلى 31 ديسمبر 9999 3 بايت، ثابتة 1 يوم 0001-01-01 9999-12-31
الوقت يستخدم لتخزين قيم الوقت فقط بدقة تصل إلى 100 نانوثانية. بايت 5 100 نانو ثانية 00:00:00.0000000 23:59:59.9999999
datetimeoffset يشبه التاريخ والوقت ولكنه يحتوي على فرق التوقيت بايت 10 100 نانو ثانية 0001-01-01 9999-12-31
التاريخ والوقت 2 يستخدم لتحديد التاريخ والوقت من 1 يناير 0001 إلى 31 ديسمبر 9999 بايت 6 100 نانو ثانية 0001-01-01 9999-12-31

مثال للاستعلام:

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

الإخراج:

'2030-01-01'

أنواع بيانات سلاسل الأحرف في SQL

تتعلق هذه الفئة بأنواع الأحرف، وتتيح لك تعريف بيانات الأحرف ذات الطول الثابت والمتغير. وتتضمن أربعة أنواع من أنواع البيانات. فيما يلي أنواع بيانات سلاسل الأحرف مع أمثلة توضيحية.

نوع البيانات الوصف الحد الأدنى الحد الأعلى ذاكرة
دبابة إنها سلسلة أحرف ذات عرض ثابت. يقوم بتخزين ما يصل إلى 8,000 حرف كحد أقصى. 0 حرفًا 8000 حرفًا ن بايت
VARCHAR هذا عبارة عن سلسلة نصية ذات عرض متغير. 0 حرفًا 8000 حرفًا ن بايت + 2 بايت
فارتشار (الحد الأقصى) هذه سلسلة أحرف ذات عرض متغير. يقوم بتخزين ما يصل إلى 1,073,741,824 حرفًا كحد أقصى. 0 حرفًا 2^31 حرف ن بايت + 2 بايت
نص هذا عبارة عن سلسلة نصية ذات عرض متغير. يخزن ما يصل إلى 2 جيجابايت من البيانات النصية. 0 حرفًا 2,147,483,647 حرفًا ن بايت + 4 بايت

مثال للاستعلام:

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

الإخراج:

هذا هو نوع بيانات الشخصية

أنواع بيانات سلاسل أحرف Unicode في SQL

تخزن هذه الفئة النطاق الكامل لأحرف Unicode، والتي تستخدم ترميز الأحرف UTF-16.

نوع البيانات الوصف الحد الأدنى الحد الأعلى ذاكرة
NCHAR إنها سلسلة يونيكود ذات عرض ثابت. 0 حرفًا 4000 حرفًا 2 مرات ن بايت
NVARCHAR إنها سلسلة يونيكود ذات عرض متغير. 0 حرفًا 4000 حرفًا 2 مرات ن بايت + 2 بايت
NTEXT إنها سلسلة يونيكود ذات عرض متغير. 0 حرفًا 1,073,741,823 حرفًا 2 أضعاف طول السلسلة

مثال للاستعلام:

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

الإخراج:

هذا هو نوع بيانات nCharacter

أنواع بيانات السلسلة الثنائية في SQL

تحتوي هذه الفئة على سلاسل ثنائية ذات طول ثابت ومتغير.

نوع البيانات الوصف الحد الأدنى الحد الأعلى ذاكرة
ثنائي هو عبارة عن سلسلة ثنائية ذات عرض ثابت. يخزن بحد أقصى 8,000 بايت. بايت 0 بايت 8000 ن بايت
فاربيناري هذه سلسلة ثنائية ذات عرض متغير. تخزن بحد أقصى 8,000 بايت. بايت 0 بايت 8000 الطول الفعلي للبيانات المدخلة + 2 بايت
صورة هذا عبارة عن سلسلة ثنائية ذات عرض متغير. يخزن ما يصل إلى 2 جيجابايت. بايت 0 بايت 2,147,483,647 -

مثال للاستعلام:

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

الإخراج:

0x000C

أنواع البيانات الأخرى في SQL

هذه هي أنواع البيانات الأخرى في SQL Server، مع وصفها أدناه:

نوع البيانات الوصف
المؤشر يُخرج هذا الأمر عمودًا يحتوي على sp_cursor_list و sp_describe_cursor. ويعيد اسم متغير المؤشر.
نسخة الصف يقوم هذا البرنامج بوضع طوابع إصدار على صفوف الجدول.
التسلسل الهرمي يمثل هذا النوع من البيانات موقعًا في التسلسل الهرمي.
معرف فريد يخزن معرفًا فريدًا عالميًا (GUID)، غالبًا ما يتم تحويله من تعبير حرفي.
Sql_variant يقوم بتخزين قيم أنواع البيانات التي يدعمها خادم SQL.
XML يقوم بتخزين بيانات XML في عمود.
نوع الهندسة المكانية وهو يمثل البيانات في نظام الإحداثيات المسطحة.
نوع الجغرافيا المكانية وهو يمثل البيانات في نظام الإحداثيات المستديرة للأرض.
جدول يقوم بتخزين مجموعة النتائج لمعالجتها لاحقًا.

حقائق مثيرة للاهتمام!

  • يُعد نوع البيانات CHAR أسرع من نوع البيانات VARCHAR عند استرجاع البيانات، لأن عرضه الثابت يتجنب مشكلة طول البيانات.ping.

الأسئلة الشائعة

يخزن نوع البيانات VARCHAR الأحرف غير اليونيكودية باستخدام بايت واحد لكل حرف، بينما يخزن نوع البيانات NVARCHAR الأحرف اليونيكودية باستخدام بايتين لكل حرف. اختر NVARCHAR عندما يتطلب العمود استيعاب لغات أو رموز متعددة خارج صفحة ترميز واحدة؛ وإلا فإن VARCHAR يستهلك مساحة تخزين أقل.

استخدم النوع DECIMAL (أو NUMERIC) عندما يجب أن تكون القيم دقيقة، مثل الأموال أو القياسات، لأنه يخزن دقة ثابتة. استخدم النوع FLOAT للقيم العلمية التقريبية حيث تكون اختلافات التقريب الطفيفة مقبولة، ويكون النطاق الواسع أهم من الدقة.

نعم. في SQL Server، يُعتبر كل من DECIMAL وNUMERIC متطابقين وظيفيًا. كلاهما يقبل دقة ونطاقًا ويخزن أرقامًا ثابتة الفاصلة بدقة، لذا يمكن استخدام الكلمتين المفتاحيتين بالتبادل. يمكنك استخدام الاسم الذي يفضله فريقك لسهولة القراءة.

نوع البيانات CHAR هو نوع ثابت الطول، حيث تُضاف مسافات إلى القيم الأقصر، لذا فإن كل قيمة تستخدم العرض المُعلن. أما نوع البيانات VARCHAR فهو متغير الطول، ويخزن الأحرف المُدخلة بالإضافة إلى بايتين فقط. استخدم CHAR للرموز الموحدة، وVARCHAR للنصوص ذات الأطوال المتغيرة.

نعم. تغيير الجدول يُغيّر الأمر ALTER COLUMN column_name new_type نوع بيانات عمودٍ ما. ينجح التغيير فقط عند تحويل القيم الحالية بسلاسة إلى النوع الجديد؛ وإلا فإنه يفشل، لذا يُنصح باختبار التحويلات وإنشاء نسخة احتياطية من البيانات أولاً.

يخزن نوع البيانات VARCHAR(n) العادي ما يصل إلى 8,000 حرف. أما نوع البيانات VARCHAR(max) فيخزن ما يصل إلى 2 جيجابايت تقريبًا (2^31-1 بايت) وهو مُصمم للنصوص الطويلة التي تتجاوز 8,000 حرف. استخدم VARCHAR(max) فقط عندما تكون القيم بهذا الحجم فعلاً.

نعم. مساعد الطيار جيثب يمكن للبرنامج اقتراح أنواع بيانات الأعمدة وإنشاء عبارات DECLARE و CREATE TABLE من خلال توجيهات اللغة الطبيعية. تأكد دائمًا من دقة البيانات، ومقياسها، وطولها، واحتياجاتها من ترميز Unicode قبل تطبيق هذه الاقتراحات في بيئة الإنتاج.

تقوم أدوات الذكاء الاصطناعي والتعلم الآلي بمراجعة بيانات العينة للتوصية بأنواع البيانات المناسبة ودقتها وأطوالها، وتحديد الأعمدة ذات الأحجام الكبيرة التي تُهدر مساحة التخزين، واكتشاف حالات عدم التطابق أثناء عمليات النقل. كما أنها تُسرّع عملية تصميم المخطط بينما يقوم المطور بتأكيد الخيارات النهائية.

تلخيص هذه التدوينة بـ: