PostgreSQL المصفوفة: الوظائف، النوع، المثال

⚡ ملخص ذكي

PostgreSQL تتيح لك المصفوفة تعريف عمود جدول كمصفوفة من أي نوع بيانات صالح. وهي تشمل إنشاء أعمدة المصفوفة، وإدراج القيم باستخدام مُنشئ ARRAY أو الأقواس المعقوفة، والاستعلام عن العناصر وتعديلها، والبحث باستخدام ANY().

  • 📦 فريف: اي PostgreSQL يحتوي نوع البيانات على نوع مصفوفة مطابق، مثل integer[].
  • 🧱 إنشاء وإدراج: استخدم أعمدة TEXT[] ومنشئ ARRAY أو الأقواس المعقوفة.
  • 🔎 الاستعلام: الوصول إلى العناصر باستخدام الرموز السفلية؛ العنصر الأول موجود في الموضع 1.
  • ✏️ التعديل والبحث: قم بتحديث العناصر الفردية وابحث عن القيم باستخدام ANY().
  • ➗ توسيع: تقوم الدالة unnest() بتقسيم قيم المصفوفة إلى صفوف منفصلة.

PostgreSQL مجموعة

ما هي تفاصيل PostgreSQL مجموعة مصفوفة؟

In PostgreSQLيمكننا تعريف العمود على أنه مصفوفة من أنواع البيانات الصالحة. يمكن أن يكون نوع البيانات مضمنًا، أو مُعرَّفًا من قِبل المستخدم، أو نوعًا مُعدَّدًا. بالإضافة إلى ذلك، تلعب المصفوفات دورًا مهمًا في PostgreSQL.

كل المقابلة PostgreSQL يأتي نوع البيانات مصحوبًا بنوع مصفوفة مناسب. على سبيل المثال، نوع البيانات الصحيح له نوع المصفوفة integer[]، ونوع البيانات الحرفي له نوع المصفوفة character[]، وهكذا.

خلق PostgreSQL المصفوفات

في المثال التالي، سنقوم بإنشاء جدول باسم "الموظفين" مع تحديد عمود جهة الاتصال كمصفوفة نصية:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

يجب أن يعمل الأمر بنجاح.

خلق PostgreSQL المصفوفات

إدراج PostgreSQL قيم المصفوفة

دعونا الآن أدخل القيم في الجدول أعلاه:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

يجب أن يتم تشغيل الإدراج بنجاح.

إدراج PostgreSQL قيم المصفوفة

تم إدخال قيم العمود الثالث، أي بيانات الاتصال، على شكل مصفوفة. وقد تم ذلك باستخدام مُنشئ المصفوفة (ARRAY). في هذا المثال، قمنا بوضعها بين قوسين مربعين []. لدينا جهتا اتصال للموظفة أليس جون.

لا يزال من الممكن لنا استخدام الأقواس المتعرجة {} كما هو موضح أدناه:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

يجب أن يعمل الأمر بنجاح.

إدراج PostgreSQL قيم المصفوفة

ستؤدي العبارات أعلاه إلى إدراج صفين في جدول الموظفين. عند استخدام الأقواس المتعرجة، يتم وضع المصفوفة داخل علامتي اقتباس مفردتين (') بينما يتم وضع عناصر المصفوفة النصية داخل علامتي اقتباس مزدوجتين (“).

الاستعلام عن بيانات المصفوفة

للاستعلام عن عناصر مصفوفة، نستخدم عبارة SELECT. لعرض محتويات جدول الموظفين، نقوم بتشغيل الأمر التالي:

SELECT * FROM Employees;

هذا يعيد ما يلي:

الاستعلام عن بيانات المصفوفة

تم وضع عناصر عمود المصفوفة، أي "التواصل"، بين قوسين معقوفين {}. وللوصول إلى عناصر المصفوفة نفسها، نضيف فهرسًا بين قوسين مربعين []. العنصر الأول في المصفوفة يكون في الموضع 1.

على سبيل المثال، نحتاج إلى الحصول على أسماء الموظفين ومعلومات الاتصال الأولى فقط للموظفين الذين لديهم أكثر من جهة اتصال. يمكننا الوصول إلى هذه المعلومات باستخدام contact[1]. لنلقِ نظرة على ذلك:

SELECT name, contact[1]
FROM Employees;

سيؤدي هذا إلى إرجاع ما يلي:

الاستعلام عن بيانات المصفوفة

يمكننا استخدام عبارة SELECT مع شرط WHERE لتصفية الصفوف بناءً على عمود المصفوفة. على سبيل المثال، لعرض الموظف الذي لديه (408)-567-78234 كجهة اتصال ثانية، يمكننا تشغيل الأمر التالي:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

سيؤدي هذا إلى إرجاع ما يلي:

الاستعلام عن بيانات المصفوفة

تعديل PostgreSQL مجموعة

يمكنك تحديث جميع عناصر المصفوفة أو عنصر واحد منها. فيما يلي محتويات جدول الموظفين:

تعديل PostgreSQL مجموعة

دعونا نقوم بتحديث رقم الهاتف الثاني للموظف جيمس بوش ورقم تعريفه 3:

تعديل PostgreSQL مجموعة

قم بتشغيل الأمر التالي:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

يجب أن يعمل الأمر بنجاح:

تعديل PostgreSQL مجموعة

دعونا نقوم بالاستعلام عن الجدول للتحقق من نجاح التغيير:

تعديل PostgreSQL مجموعة

كان التغيير ناجحا.

البحث في PostgreSQL مجموعة

حاليًا، جدول الموظفين لدينا هو كما يلي:

البحث في PostgreSQL مجموعة

لنفترض أننا نريد معرفة مالك جهة الاتصال (408)-783-5731 بغض النظر عن موقعها ضمن مصفوفة جهات الاتصال. يمكننا استخدام الدالة ANY() كما هو موضح أدناه:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

سيؤدي هذا إلى إرجاع ما يلي:

البحث في PostgreSQL مجموعة

توسيع المصفوفات

يمكننا تقسيم قيم المصفوفة إلى صفوف. تُعرف هذه العملية بتوسيع المصفوفة. في مثال جدول الموظفين، يوجد بعض الموظفين الذين لديهم جهتا اتصال في مصفوفة جهات الاتصال. يمكننا فصل هذه الجهات إلى صفوف منفصلة. PostgreSQL يوفر هذا البرنامج دالة unnest() التي يمكن استخدامها لهذا الغرض. على سبيل المثال:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

سيؤدي هذا إلى إرجاع ما يلي:

توسيع المصفوفات

لدى الموظفين أليس جون وجيمس بوش جهتي اتصال. يمكننا تقسيم هاتين الجهتين إلى صفوف منفصلة.

باستخدام pgAdmin

خلق PostgreSQL المصفوفات

لإنجاز الأمر نفسه من خلال pgAdmin، قم بما يلي:

الخطوة 1) قم بتسجيل الدخول إلى حساب pgAdmin الخاص بك.

الخطوة 2)

  1. من شريط التنقل الموجود على اليسار، انقر فوق قواعد البيانات.
  2. انقر على زر العرض التوضيحي.

خلق PostgreSQL المصفوفات باستخدام pgAdmin

الخطوة 3) اكتب الاستعلام في محرر الاستعلام لإنشاء جدول الموظفين:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

الخطوة 4) انقر فوق الزر "تنفيذ".

خلق PostgreSQL المصفوفات باستخدام pgAdmin

إدراج PostgreSQL قيم المصفوفة

الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

الخطوة 2) انقر فوق الزر تنفيذ:

إدراج PostgreSQL قيم المصفوفة

الخطوة 3) لاستخدام الأقواس المعقوفة في الاستعلام، اكتب الاستعلام التالي في محرر الاستعلام:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

ثم انقر فوق زر التنفيذ:

إدراج PostgreSQL قيم المصفوفة

الاستعلام عن بيانات المصفوفة

الخطوة 1) لعرض محتويات جدول الموظفين، اكتب الاستعلام التالي في محرر الاستعلامات:

SELECT * FROM Employees;

الخطوة 2) انقر فوق الزر تنفيذ:

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

ينبغي أن يعود ما يلي:

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

الخطوة 3) لعرض بيانات الاتصال الأولى للموظفين، اكتب الاستعلام التالي في محرر الاستعلامات وانقر على زر التنفيذ:

SELECT name, contact[1]
FROM Employees;

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

ينبغي أن يعود ما يلي:

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

الخطوة 4) لدمج عبارة SELECT مع عبارة WHERE، اكتب الأمر التالي في محرر الاستعلام وانقر على زر التنفيذ:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

ينبغي أن يعود ما يلي:

الاستعلام عن بيانات المصفوفة باستخدام pgAdmin

تعديل PostgreSQL مجموعة

الخطوة 1) لتحديث جهة الاتصال الثانية للمستخدم الذي يحمل المعرف 3، قم بتشغيل الأمر التالي:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

الخطوة 2) انقر فوق الزر "تنفيذ".

تعديل PostgreSQL صفيف باستخدام pgAdmin

الخطوة 3) اكتب الأمر التالي في محرر الاستعلام للتحقق مما إذا كان التغيير قد تم بنجاح، ثم انقر فوق زر التنفيذ:

SELECT * FROM Employees;

تعديل PostgreSQL صفيف باستخدام pgAdmin

ينبغي أن يعود ما يلي:

تعديل PostgreSQL صفيف باستخدام pgAdmin

البحث في PostgreSQL مجموعة

الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

الخطوة 2) انقر فوق الزر "تنفيذ".

البحث في PostgreSQL صفيف باستخدام pgAdmin

ينبغي أن يعود ما يلي:

البحث في PostgreSQL صفيف باستخدام pgAdmin

توسيع المصفوفات

الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

الخطوة 2) انقر فوق الزر "تنفيذ".

توسيع المصفوفات باستخدام pgAdmin

ينبغي أن يعود ما يلي:

توسيع المصفوفات باستخدام pgAdmin

قم بتنزيل قاعدة البيانات المستخدمة في هذا البرنامج التعليمي

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

نعم. يمكن للمساعدين المدعومين بالذكاء الاصطناعي كتابة أوامر إنشاء الجداول (CREATE TABLE) باستخدام أعمدة المصفوفات، وأوامر الإدراج (INSERT) باستخدام المصفوفات أو الأقواس المعقوفة، ووظائف مثل unnest() أو ANY(). اختبر استعلام SQL المُنشأ على مخططك قبل تشغيله.

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

استخدم الدالة array_length(array, dimension). على سبيل المثال، تُعيد الدالة array_length(contact, 1) عدد العناصر في البُعد الأول من مصفوفة جهات الاتصال.

نعم. استخدم الدالة array_append(array, value) أو عامل الربط ||. على سبيل المثال، يُضيف الأمر UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') عنصرًا جديدًا.

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