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 |
إن استخدام أنواع عناوين الشبكة له المزايا التالية
- توفير مساحة التخزين
- التحقق من خطأ الإدخال
- وظائف مثل البحث عن البيانات حسب الشبكة الفرعية
نوع البحث عن النص
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 يقدم نوعين من البيانات
- 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"], "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 يحتوي على العديد من الإدخالات ذات الأغراض الخاصة والتي تسمى الأنواع الزائفة
- من الأفضل استخدام نوع البيانات "النص" إلا إذا كنت تريد تقييد الإدخال
