PostgreSQL أنواع البيانات: رقمية، حرفية، بايت
⚡ ملخص ذكي
PostgreSQL تحدد أنواع البيانات نوع القيمة التي يمكن لكل عمود تخزينها، وتغطي فئات الأحرف والأرقام والثنائيات والتاريخ والوقت والقيم المنطقية والهندسية والشبكية وUUID وXML وJSON. PostgreSQL كما يتيح للمستخدمين إنشاء أنواع مخصصة باستخدام أمر CREATE TYPE.
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 |
إن استخدام أنواع عناوين الشبكة له المزايا التالية
- توفير مساحة التخزين
- التحقق من خطأ الإدخال
- وظائف مثل البحث عن البيانات حسب الشبكة الفرعية
نوع البحث عن النص
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 يقدم نوعين من البيانات
- JSON
- 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

