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

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

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

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

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

لندرس 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 وIPV5
مكادر بايت 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 سبتمبر 20225 في أي وضع
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)،…)
المضلع 40 + 16 ن بايت المضلع [(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"], "onboareded": true}'); 

أنواع زائفة

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

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

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

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

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

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

ملخص

  • PostgreSQL يقدم مجموعة غنية من أنواع البيانات الأصلية للمستخدمين
  • PostgreSQL يدعم أنواع بيانات الأحرف لتخزين القيم النصية
  • PostgreSQL يدعم نوعين مختلفين من الأرقام: 1. الأعداد الصحيحة، 2. الأرقام ذات الفاصلة العائمة
  • السلسلة الثنائية هي سلسلة من البايتات أو الثمانيات
  • PostgreSQL يحتوي على نوع عنوان الشبكة لمساعدتك على تحسين تخزين بيانات الشبكة
  • بحث نصي PostgreSQL تم تصميم هياكل البيانات لدعم البحث عن النص الكامل
  • تسمح أنواع بيانات التاريخ/الوقت PSQL بمعلومات التاريخ والوقت بتنسيقات مختلفة
  • يمكن أن تحتوي أنواع حقول Postgres المنطقية على ثلاث قيم: 1. صحيح 2. خطأ 3. خالٍ
  • هندسي PostgreSQL تمثل أنواع البيانات كائنات مكانية ثنائية الأبعاد
  • أنواع البيانات المذكورة في PostgreSQL يعد مفيدًا لتمثيل المعلومات التي نادرًا ما تتغير مثل رمز البلد أو معرف الفرع
  • التعريفات الفريدة عالميًا (UUID) هي كمية 128 بت يتم إنشاؤها بواسطة خوارزمية
  • PostgreSQL يحتوي على العديد من الإدخالات ذات الأغراض الخاصة والتي تسمى الأنواع الزائفة
  • من الأفضل استخدام نوع البيانات "النص" إلا إذا كنت تريد تقييد الإدخال

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