PostgreSQL أنواع البيانات: رقمية، حرفية، بايت

⚡ ملخص ذكي

PostgreSQL تحدد أنواع البيانات نوع القيمة التي يمكن لكل عمود تخزينها، وتغطي فئات الأحرف والأرقام والثنائيات والتاريخ والوقت والقيم المنطقية والهندسية والشبكية وUUID وXML وJSON. PostgreSQL كما يتيح للمستخدمين إنشاء أنواع مخصصة باستخدام أمر CREATE TYPE.

  • 🔤 أنواع الشخصيات: تقوم أنواع البيانات CHAR و VARCHAR و TEXT بتخزين قيم نصية ذات طول ثابت، وقيم نصية ذات طول متغير، وقيم نصية ذات طول غير محدود.
  • 🔢 الأنواع الرقمية: تتراوح أنواع الأعداد الصحيحة والأعداد العشرية من smallint إلى bigint، بالإضافة إلى القيم العددية والعشرية الدقيقة.
  • 🕒 التاريخ و الوقت: توفر أنواع الطوابع الزمنية والتاريخ والوقت والفترات الزمنية دقة تصل إلى أجزاء من الثانية مع إمكانية اختيار المناطق الزمنية.
  • ✅ القيم المنطقية والتعداد: تحتوي الأنواع المنطقية على القيم true أو false أو null، بينما تمثل الأنواع المُعدّدة مجموعات ثابتة نادراً ما تتغير.
  • 🌐 الأنواع المتخصصة: تتعامل الشبكات، والبيانات الهندسية، وUUID، وXML، وJSON، وJSONB مع العناوين والأشكال والمعرفات والبيانات المهيكلة.
  • ؟؟؟؟ أفضل ممارسة: يفضل استخدام نوع TEXT للسلاسل النصية ونوع NUMERIC للأرقام، وإنشاء أنواع مخصصة فقط عند الحاجة.

PostgreSQL يقدم مجموعة غنية من أنواع البيانات الأصلية للمستخدمين. يمكن للمستخدمين إضافة أنواع جديدة بمساعدة أمر CREATE TYPE. كما يجعل الاستعلامات أبسط وأكثر قابلية للقراءة.

أنواع البيانات في PostgreSQL

PostgreSQL يدعم أنواع البيانات التالية:

  • أنواع النص
  • أنواع رقمية
  • التواريخ والأوقات
  • XML
  • JSON
  • منطقية
  • بت
  • البيانات الثنائية
  • الانرنيت
  • المصفوفات
  • قم بإنشاء نوع البيانات الخاصة بك
  • مؤقت
  • UUID
  • أنواع البيانات الخاصة لتخزين عنوان الشبكة والبيانات الهندسية.

لندرس PostgreSQL أنواع البيانات بالتفصيل

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

PostgreSQL يدعم أنواع بيانات الأحرف لتخزين القيم النصية. PostgreSQL يبني أنواع بيانات الأحرف من نفس الهياكل الداخلية. PostgreSQL يقدم ثلاثة أنواع من بيانات الأحرف: CHAR(n)، وVARCHAR(n)، وTEXT.

الاسم الوصف
فارشار (ن) يسمح لك بإعلان طول متغير مع حد
حرف (ن) طول ثابت، مبطن فارغ
نص يمكن استخدام نوع البيانات هذا للإعلان عن متغير بطول غير محدود

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

PostgreSQL يدعم نوعين مختلفين من الأرقام:

  • الأعداد الصحيحة
  • أرقام النقطة العائمة
الاسم حجم المتجر المدى
com.miniint بايت 2 -32768 ل+ 32767
عدد صحيح بايت 4 -2147483648 ل+ 2147483647
BIGINT بايت 8 -9223372036854775808 ل9223372036854775807
عدد عشري متغير إذا قمت بتعريفها كنوع بيانات عشري يتراوح من 131072 رقمًا قبل العلامة العشرية إلى 16383 رقمًا بعد العلامة العشرية
الرقمية متغير إذا قمت بتعريفه كرقم، فيمكنك تضمين رقم يصل إلى 131072 رقمًا قبل العلامة العشرية إلى 16383 رقمًا بعد العلامة العشرية
حقيقي بايت 4 دقة 6 أرقام عشرية
مضاعفة بايت 8 دقة 15 أرقام عشرية

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

السلسلة الثنائية هي سلسلة من الثمانيات أو البايتات. يتم تقسيم أنواع بيانات Postgres الثنائية بطريقتين.

  • تسمح السلاسل الثنائية بتخزين احتمالات القيمة صفر
  • الثمانيات غير القابلة للطباعة

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

الاسم حجم التخزين الوصف
بايت 1 إلى 4 بايت بالإضافة إلى حجم السلسلة الثنائية سلسلة ثنائية ذات طول متغير

نوع عنوان الشبكة

تقوم العديد من التطبيقات بتخزين معلومات الشبكة مثل عناوين IP الخاصة بالمستخدمين أو أجهزة الاستشعار. PostgreSQL يحتوي على ثلاثة أنواع أصلية تساعدك على تحسين بيانات الشبكة.

الاسم المقاس الوصف
سيدر 7 أو 19 بايت IPv4 و IPv6 الشبكات
إنت 7 أو 19 بايت مضيفات وشبكات IPv4 و IPv6
مكادر بايت 6 عناوين MAC

إن استخدام أنواع عناوين الشبكة له المزايا التالية

  1. توفير مساحة التخزين
  2. التحقق من خطأ الإدخال
  3. وظائف مثل البحث عن البيانات حسب الشبكة الفرعية

نوع البحث عن النص

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

  • البحث عن النص Tsvector PostgreSQL تمثل أنواع المتغيرات مستندًا في نموذج محسّن للبحث عن النص
  • يقوم البحث النصي لنوع الاستعلام بتخزين الكلمات الرئيسية التي يجب البحث عنها

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

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

يتم قبول إدخال التاريخ والوقت بتنسيقات مختلفة، بما في ذلك Postgres التقليدية وISO 8601. ومتوافق مع SQL وما إلى ذلك.

PostgreSQL يدعم ترتيب اليوم / الشهر / السنة. التنسيقات المدعومة هي DMY، MDY، YMD

أنواع البيانات المؤقتة

الاسم المقاس المدى دقة الشاشة
الطابع الزمني دون المنطقة الزمنية بايت 8 4713 ق.م حتى 294276 م 1 ميكروثانية / 14 رقمًا
الطابع الزمني مع المنطقة الزمنية بايت 8 4713 ق.م حتى 294276 م 1 ميكروثانية / 14 رقمًا
تاريخ بايت 4 4713 ق.م حتى 294276 م يوم واحد
الوقت بدون منطقة زمنية بايت 8 00:00:00 to 24:00:00 1 ميكروثانية / 14 رقمًا
الوقت مع المنطقة الزمنية بايت 12 00:00:00 + 1459 إلى 24:00:00-1459 1 ميكروثانية / 14 رقمًا
الفاصلة بايت 12 -178000000 إلى 178000000 سنة 1 ميكروثانية / 14 رقمًا

أمثلة

إدخال الوصف
2025-09-07 ISO 8601، 7 سبتمبر بأي نمط تاريخ (التنسيق الموصى به)
7 سبتمبر 2025 7 سبتمبر بأي نمط تاريخ
9/7/2025 7 سبتمبر مع MDY، 9 يوليو مع DMY
9/7/25 7 سبتمبر 2025، مع MDY
2025 أيلول 7 7 سبتمبر بأي نمط تاريخ
7 سبتمبر - 2018 7 سبتمبر بأي نمط تاريخ
7 أيلول 25 7 سبتمبر 2025، مع YMD
20250907 ISO 8601، 7 سبتمبر 2025 في أي وضع
2025.250 السنة واليوم من السنة، في هذه الحالة، 7 سبتمبر 2025
J25250 التاريخ الجولياني

الوقت/الوقت مع إدخال المنطقة الزمنية

إدخال الوصف
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11:19 AM نفس الساعة 11:19
11: 19 PM نفس 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601، الساعة 11:19 مساءً بتوقيت شرق الولايات المتحدة
23: 19 EST المنطقة الزمنية المحددة بالتوقيت الشرقي، مثل الساعة 11:19 مساءً بالتوقيت الشرقي

النوع المنطقي

يمكن أن يحمل نوع البيانات المنطقية

  • صواب
  • خطأ
  • فارغة

القيم.

يمكنك استخدام ملف منطقي or منطقية الكلمة الأساسية للإعلان عن عمود بنوع البيانات المنطقية.

عندما تقوم بإدراج قيم في عمود منطقي، يقوم Postgre بتحويل القيم مثل

  • نعم
  • y
  • 1
  • t
  • صحيح

إلى 1.

بينما مثل القيم

  • لا
  • N
  • 0
  • F
  • خطأ

يتم تحويلها إلى 0

أثناء تحديد البيانات، يتم تحويل القيم مرة أخرى إلى نعم، صحيح، ص، وما إلى ذلك.

أنواع البيانات الهندسية

تمثل أنواع البيانات الهندسية كائنات مكانية ثنائية الأبعاد. وهي تساعد في تنفيذ عمليات مثل الدوران والقياس والترجمة وما إلى ذلك.

الاسم حجم التخزين التمثيل الوصف
البوينت بايت 16 نقطة على متن الطائرة (س ، ص)
لاين بايت 32 خط لانهائي ((xl.yl).(x2.y2))
إلسيج بايت 32 قطعة خطية محدودة ((xl.yl).(x2.y2))
Box بايت 32 مستطيل Box ((xl.yl).(x2.y2))
مسار 16 ن + 16 ن بايت إغلاق وفتح المسار ((xl.yl)،…)
Polygon 40 + 16 ن بايت Polygon [(xl.yl),….]
دائرة بايت 24 دائرة <(xy).r> (نقطة المركز ونصف القطر)

الأنواع المذكورة

عدت PostgreSQL يعد نوع البيانات مفيدًا لتمثيل المعلومات التي نادرًا ما تتغير مثل رمز البلد أو معرف الفرع. يتم تمثيل نوع البيانات التعدادية في جدول بمفاتيح خارجية لضمان تكامل البيانات.

مثال

لون الشعر ثابت إلى حد ما في قاعدة البيانات الديموغرافية

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

الأنواع المذكورة

نوع النطاق

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

قامت Postgre ببناء أنواع النطاقات على النحو التالي

  • int4range — عرض نطاق الأعداد الصحيحة
  • int8range - عرض نطاق bigint
  • numrange - يعرض النطاق الرقمي
  • tstrange — يساعدك على عرض الطابع الزمني بدون منطقة زمنية
  • غريب - يسمح لك بعرض الطابع الزمني مع المنطقة الزمنية
  • نطاق التاريخ - نطاق التاريخ

نوع UUID

المعرّف الفريد عالميًا (UUID) هو قيمة مكونة من 128 بت، يتم إنشاؤها بواسطة خوارزمية. من المستبعد جدًا أن يُنشئ شخص آخر في العالم نفس المعرّف باستخدام نفس الخوارزمية. لهذا السبب، تُعدّ هذه المعرّفات خيارًا مثاليًا للأنظمة الموزعة، إذ توفر التفرد داخل قاعدة البيانات الواحدة. يُكتب المعرّف الفريد عالميًا (UUID) على شكل مجموعة من الأرقام الست عشرية الصغيرة، حيث تفصل بين المجموعات المختلفة شرطات.

PostgreSQL يحتوي على نوع بيانات UUID أصلي يستهلك 16 بايت من مساحة التخزين. يُعد UUID نوع بيانات مثاليًا للمفاتيح الأساسية.

مثال

d5f28c97-b962-43be-9cf8-ca1632182e8e

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

نوع XML

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

مثال

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

نوع جيسون

لتخزين بيانات JSON PostgreSQL يقدم نوعين من البيانات

  1. JSON
  2. JSONB
جسون جسونب
امتداد بسيط لنوع البيانات النصية مع التحقق من صحة JSON تمثيل ثنائي لبيانات JSON
يعد الإدراج سريعًا ولكن استرداد البيانات بطيء نسبيًا. الإدراج بطيء ولكن حدد (استرداد البيانات سريع)
يحفظ البيانات المدخلة تمامًا كما هي بما في ذلك المسافات البيضاء. يدعم الفهرسة. قد يقوم بتحسين المسافة البيضاء لجعل عملية الاسترجاع أسرع.
إعادة المعالجة عند استرجاع البيانات لا يلزم إعادة المعالجة عند استرجاع البيانات

يستخدم نوع بيانات JSON الأكثر استخدامًا على نطاق واسع jsonb ما لم تكن هناك حاجة متخصصة لاستخدام نوع بيانات JSON.

مثال

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboarded": true}');

أنواع زائفة

PostgreSQL يحتوي على العديد من الإدخالات ذات الأغراض الخاصة والتي تسمى الأنواع الزائفة. لا يمكنك استخدام الأنواع الزائفة مثل PostgreSQL أنواع الأعمدة. يتم استخدامها للإعلان عن وسيطة الوظيفة أو نوع الإرجاع.

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

الاسم الوصف
اي تقبل الوظيفة جميع أنواع بيانات الإدخال.
مجموعة تقبل الدالة أي نوع بيانات صفيف.
أي عنصر تقبل الوظيفة أي نوع بيانات.
أي التعداد تقبل الوظيفة أي نوع بيانات تعداد.
غير مصفوفة تقبل الدالة أي نوع بيانات غير مصفوفة.
سلسلة ج تقبل الدالة أو تُرجع سلسلة C منتهية بقيمة خالية.
داخلي تقبل الوظيفة الداخلية أو ترجع نوع البيانات الداخلية للخادم.
Language_handler تم الإعلان عن إرجاع معالج اللغة.
القيد ابحث عن دالة تُرجع نوع صف غير محدد.
تحفيز عملية يتم استخدام وظيفة الزناد لإرجاع الزناد.

من المهم أن يحتاج المستخدم الذي يستخدم هذه الوظيفة إلى التأكد من أن الوظيفة ستعمل بشكل آمن عند استخدام نوع زائف كنوع وسيطة.

أفضل الممارسات لاستخدام أنواع البيانات

  • استخدم نوع البيانات "النص" إلا إذا كنت تريد تقييد الإدخال
  • لا تستخدم "شار" أبدًا.
  • تستخدم الأعداد الصحيحة "int". استخدم bigint فقط عندما يكون لديك أرقام كبيرة حقًا
  • استخدم "رقمي" دائمًا تقريبًا
  • استخدام تعويم في PostgreSQL إذا كان لديك مصدر بيانات IEEE 754

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

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

نعم. PostgreSQL تتيح هذه الخاصية لأي عمود تخزين مصفوفة من نوع أساسي، مثل integer[] أو text[]. تُعد المصفوفات مفيدة لقوائم القيم، ويمكن البحث فيها وفهرستها وفك تداخلها في الاستعلامات.

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

بإمكان الذكاء الاصطناعي مراجعة بياناتك النموذجية واقتراح أنواع مناسبة، مثل النوع الرقمي للأموال أو jsonb للحقول المرنة. كما يشرح لك المفاضلات بين التخزين والدقة والأداء لتتمكن من اتخاذ القرار بثقة.

نعم. يمكن للذكاء الاصطناعي تحديد أنواع البيانات من MySQL, Oracleأو SQL Server بالنسبة لهم PostgreSQL المكافئات وعدم تطابق العلامات، مثل TINYINT أو NVARCHAR، helping تخطط لعملية نقل قاعدة بيانات أكثر سلاسة.

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