Oracle أنواع بيانات PL/SQL: منطقية، رقم، تاريخ [مثال]

⚡ ملخص ذكي

تحدد أنواع بيانات PL/SQL كيفية Oracle تخزن هذه البيانات كل قيمة في كتلة، وتتعامل معها، وتقيدها. وهي تُصنف إلى عائلات من الأحرف، والأرقام، والقيم المنطقية، والتواريخ، والكائنات الكبيرة (LOB)، ولكل منها تنسيق تخزين خاص بها، وحدود حجم، وقواعد تعيين.

  • 🔤 حرف: CHAR هو طول ثابت، وVARCHAR2 هو طول متغير، وNCHAR وNVARCHAR2 يستخدمان مجموعة الأحرف الوطنية.
  • 🔢 عدد: يخزن NUMBER قيمًا ثابتة أو عائمة تصل دقتها إلى 38 رقمًا.
  • ✅ منطقية: يحمل قيمة صحيحة أو خاطئة ويستخدم بشكل أساسي في المنطق الشرطي.
  • 📅 التاريخ: يخزن التاريخ والوقت، ويكون الوقت الافتراضي هو منتصف الليل عندما لا يتم تحديد وقت.
  • 🗂️ رفع الكرة: تقوم أنواع البيانات BLOB و CLOB و NCLOB و BFILE بتخزين بيانات غير منظمة كبيرة تصل إلى 128 تيرابايت.
  • ؟؟؟؟ أفضل ممارسة: يُفضل استخدام VARCHAR2 بدلاً من CHAR و LOB بدلاً من LONG لتوفير الذاكرة وضمان التوافق مع المستقبل.
  • 🔗 مجال العمل تُطبق أنواع SQL على أعمدة الجدول؛ وتُستخدم أنواع PL/SQL داخل كتل PL/SQL.

Oracle أنواع البيانات بل/سكل

ما هي أنواع بيانات PL/SQL؟

أنواع البيانات في لغة PL/SQL، يتم تحديد كيفية تخزين البيانات ومعالجتها والتعامل معها بواسطة Oracle أثناء التخزين والمعالجة. ترتبط أنواع البيانات بتنسيق تخزين محدد وقيود نطاق. Oracleيتم تعيين نوع بيانات لكل قيمة أو ثابت.

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

فيما يلي رسم تخطيطي يوضح الأنواع المختلفة Oracle أنواع بيانات PL/SQL:

أنواع البيانات المختلفة في PL/SQL
أنواع البيانات المختلفة في PL/SQL

نوع بيانات حرف PL/SQL

يخزن هذا النوع من البيانات الأحرف الأبجدية الرقمية بتنسيق نصي. يجب دائمًا وضع القيم الحرفية بين علامتي اقتباس مفردتين عند إسنادها إلى نوع بيانات CHARACTER.

يتم تصنيف نوع بيانات الشخصية هذا أيضًا على النحو التالي:

  • نوع بيانات CHAR (حجم سلسلة ثابت)
  • نوع البيانات VARCHAR2 (حجم السلسلة المتغير)
  • نوع البيانات VARCHAR
  • NCHAR (حجم السلسلة الثابتة الأصلي)
  • NVARCHAR2 (حجم السلسلة المتغير الأصلي)
  • خام طويل وطويل
نوع البيانات الوصف بناء الجملة
CHAR يخزن هذا النوع من البيانات قيمة نصية، ويتم تحديد حجم السلسلة عند تعريفها. متغير.

  • Oracle يقوم البرنامج بإضافة مسافات فارغة إلى المتغير إذا لم يشغل الحجم المُعلن عنه بالكامل، لذلك Oracle يقوم بتخصيص الذاكرة بالحجم المعلن حتى لو لم يملأ المتغير الذاكرة.
  • تقييد الحجم هو 1-2000 بايت.
  • يُعدّ نوع البيانات CHAR أكثر ملاءمةً في الحالات التي يتم فيها التعامل مع حجم بيانات ثابت.
grade CHAR;
manager CHAR (10):= 'guru99';

شرح بناء الجملة:

  • يُعلن البيان الأول عن المتغير 'grade' من نوع بيانات CHAR بحجم أقصى يبلغ 1 بايت (القيمة الافتراضية).
  • يُعلن البيان الثاني عن المتغير 'manager' من نوع بيانات CHAR بحجم أقصى يبلغ 10 ويُسند إليه القيمة 'guru99'، وهي 6 بايت. Oracle يخصص 10 بايت بدلاً من 6 في هذه الحالة.
فاركار 2 يخزن هذا النوع من البيانات سلسلة نصية، لكن طولها غير ثابت.

  • يبلغ الحد الأقصى لحجم عمود الجدول من 1 إلى 4000 بايت، ومن 1 إلى 32767 بايت للمتغير.
  • يتم تحديد حجم كل متغير عند الإعلان عنه.
  • Oracle يقوم بتخصيص الذاكرة فقط بعد تعريف المتغير، لذلك فهو يستخدم الطول الفعلي للسلسلة المخزنة بدلاً من الحجم المعلن.
  • من الأفضل دائمًا استخدام VARCHAR2 بدلاً من CHAR لتحسين استخدام الذاكرة.
manager VARCHAR2(10) := 'guru99';

شرح بناء الجملة:

  • يُعلن البيان عن المتغير 'manager' من نوع بيانات VARCHAR2 بحجم أقصى يبلغ 10 ويُسند إليه القيمة 'guru99'، والتي تبلغ 6 بايت. Oracle يخصص ذاكرة بحجم 6 بايت فقط هنا.
فاركار وهذا مرادف لنوع البيانات VARCHAR2.

  • من الممارسات الجيدة دائمًا استخدام VARCHAR2 بدلاً من VARCHAR لتجنب التغييرات السلوكية.
manager VARCHAR(10) := 'guru99';

شرح بناء الجملة:

  • يُعلن البيان عن المتغير 'manager' من نوع بيانات VARCHAR بحجم أقصى يبلغ 10 ويُسند إليه 'guru99'، 6 بايت. Oracle يخصص 6 بايتات فقط، على غرار VARCHAR2.
نشار هذا النوع من البيانات هو نفسه نوع CHAR، ولكن مجموعة الأحرف هي مجموعة الأحرف الوطنية.

  • يمكن تعريف مجموعة الأحرف هذه للجلسة باستخدام NLS_PARAMETERS.
  • يمكن أن تكون مجموعة الأحرف إما UTF16 أو UTF8.
  • تقييد الحجم هو 1-2000 بايت.
native NCHAR(10);

شرح بناء الجملة:

  • يُعلن البيان عن المتغير 'native' من نوع بيانات NCHAR بحجم أقصى يبلغ 10.
  • يعتمد الطول على عدد البايتات لكل حرف المحدد في مجموعة الأحرف.
نفارتشار2 هذا النوع من البيانات هو نفسه VARCHAR2، ولكن مجموعة الأحرف هي مجموعة الأحرف الوطنية.

  • يمكن تعريف مجموعة الأحرف هذه للجلسة باستخدام NLS_PARAMETERS.
  • يمكن أن تكون مجموعة الأحرف إما UTF16 أو UTF8.
  • تقييد الحجم هو 1-4000 بايت.
Native_var NVARCHAR2(10):= 'guru99';

شرح بناء الجملة:

  • يُعلن البيان عن المتغير 'Native_var' من نوع بيانات NVARCHAR2 بحجم أقصى يبلغ 10.
خام طويل وطويل يخزن هذا النوع من البيانات نصوصًا كبيرة أو بيانات خام يصل حجمها الأقصى إلى 2 جيجابايت.

  • وتستخدم هذه بشكل رئيسي في قاموس البيانات.
  • يخزن LONG بيانات مجموعة الأحرف، بينما يخزن LONG RAW البيانات بتنسيق ثنائي.
  • يقبل LONG RAW كائنات الوسائط والصور، بينما يعمل LONG فقط على البيانات التي يمكن تخزينها باستخدام مجموعة أحرف.
Large_text LONG;
Large_raw LONG RAW;

شرح بناء الجملة:

  • يُعلن البيان عن 'Large_text' من نوع البيانات LONG و 'Large_raw' من نوع البيانات LONG RAW.

ملاحظة: لا يُنصح باستخدام نوع البيانات LONG بواسطة Oracleيُفضّل استخدام نوع بيانات LOB بدلاً من ذلك.

نوع بيانات رقم PL/SQL

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

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

شرح بناء الجملة:

  • يُعلن الإعلان الأول عن المتغير 'A' من نوع بيانات رقمي بدقة إجمالية 8 و 2 أرقام عشرية.
  • يُعلن الثاني عن 'B' من نوع بيانات رقمي بدقة إجمالية 8 وبدون أرقام عشرية.
  • أما النوع الثالث فهو الأكثر عمومية، حيث يُعرّف النوع 'C' من نوع البيانات الرقمية دون أي قيود على الدقة أو عدد المنازل العشرية. ويمكنه استيعاب ما يصل إلى 38 رقمًا.

نوع البيانات المنطقية PL/SQL

يخزن هذا النوع من البيانات القيم المنطقية. Oracle يمثل نوع البيانات المنطقي إما TRUE أو FALSE، ويُستخدم بشكل أساسي في العبارات الشرطية. لا يلزم وضع القيم بين علامتي اقتباس عند إسنادها.

Var1 BOOLEAN;

شرح بناء الجملة:

  • تم تعريف المتغير 'Var1' كنوع بيانات منطقي (BOOLEAN). ستكون قيمة الناتج إما صحيحة أو خاطئة بناءً على الشرط المحدد.

نوع بيانات التاريخ PL/SQL

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

المعيار Oracle تنسيق الوقت للإدخال والإخراج هو 'DD-MON-YY'، والذي يتم تعيينه في NLS_PARAMETERS (NLS_DATE_FORMAT) على مستوى الجلسة.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

شرح بناء الجملة:

  • تم تعريف المتغير 'newyear' كنوع بيانات DATE وتم تعيين القيمة 1 يناير 2015 له.
  • يُعلن الإعلان الثاني عن 'current_date' كنوع بيانات DATE ويُعيّن تاريخ النظام الحالي.
  • يحتوي كلا المتغيرين على معلومات زمنية.

نوع بيانات PL/SQL LOB

يُستخدم هذا النوع من البيانات بشكل أساسي لتخزين ومعالجة كتل كبيرة من البيانات غير المهيكلة مثل الصور وملفات الوسائط المتعددة. Oracle يفضل استخدام نوع البيانات LOB على نوع البيانات LONG لأنه أكثر مرونة. وتتمثل المزايا الرئيسية لـ LOB على LONG فيما يلي:

  • يقتصر الجدول على عمود واحد من نوع LONG، بينما لا يوجد قيد على عدد أعمدة LOB.
  • تقبل أدوات واجهة البيانات بيانات LOB أثناء النسخ المتماثل ولكنها تتجاهل أعمدة LONG، والتي يجب نسخها يدويًا.
  • يخزن العمود الطويل ما يصل إلى 2 جيجابايت، بينما يمكن أن يخزن العمود الكبير ما يصل إلى 128 تيرابايت.
  • Oracle يستمر في تحسين نوع بيانات LOB مع كل إصدار، بينما يبقى نوع LONG دون تغيير إلى حد كبير.

لذا يُفضّل دائمًا استخدام نوع بيانات LOB بدلًا من LONG. يمكن لأنواع بيانات LOB المختلفة الموضحة أدناه تخزين ما يصل إلى 128 تيرابايت:

  1. BLOB
  2. كلوب و نكلوب
  3. ملف
نوع البيانات الوصف بناء الجملة
BLOB يخزن هذا النوع من البيانات بيانات LOB بتنسيق ملف ثنائي بحد أقصى 128 تيرابايت. ولا يخزن البيانات بناءً على تفاصيل مجموعة الأحرف، لذا يمكنه تخزين البيانات غير المهيكلة مثل كائنات الوسائط المتعددة والصور.
Binary_data BLOB;

شرح بناء الجملة:

  • تم تعريف المتغير 'Binary_data' على أنه BLOB.
كلوب و نكلوب يخزن نوع البيانات CLOB بيانات LOB باستخدام مجموعة الأحرف، بينما يخزن نوع البيانات NCLOB البيانات باستخدام مجموعة الأحرف الأصلية. ولأن هذين النوعين يستخدمان تخزينًا قائمًا على مجموعة الأحرف، فإنهما لا يستطيعان تخزين بيانات مثل الوسائط المتعددة أو الصور. الحد الأقصى لحجم البيانات هو 128 تيرابايت.
Charac_data CLOB;

شرح بناء الجملة:

  • تم تعريف المتغير 'Charac_data' كنوع بيانات CLOB.
ملف
  • يقوم برنامج BFILE بتخزين البيانات الثنائية غير المهيكلة خارج قاعدة البيانات كملف نظام تشغيل.
  • يتم تحديد حجم ملف BFILE بواسطة نظام التشغيل، والملفات للقراءة فقط ولا يمكن تعديلها.

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

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

يسمح نوع البيانات LOB بوجود أعمدة متعددة في الجدول الواحد، ويخزن بيانات تصل سعتها إلى 128 تيرابايت، ويشهد تحسينات مستمرة مع كل إصدار. أما نوع البيانات LONG فيقتصر على عمود واحد، وبحد أقصى 2 جيجابايت، ويُستخدم بشكل أساسي لأغراض التوافق مع الإصدارات السابقة.

غير موجود في الإصدارات القديمة. كان نوع البيانات BOOLEAN خاصًا بلغة PL/SQL فقط، لذا كانت أعمدة الجداول تستخدم علامة NUMBER أو CHAR بدلاً منه. يُستخدم مباشرةً داخل الكتل للمنطق الشرطي.

نعم. من خلال تحليل قيم العينات من حيث الطول والنطاق والتنسيق، يمكن للذكاء الاصطناعي اقتراح أنواع البيانات VARCHAR2 أو NUMBER أو DATE أو LOB، وتحديد الأعمدة ذات الأحجام الكبيرة. تأكد من صحة الاختيار باستخدام بيانات مستقبلية.

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

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