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

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

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

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

خلق 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.

على سبيل المثال، نحتاج إلى الحصول على أسماء الموظفين وجهة الاتصال الأولى فقط للموظفين الذين لديهم أكثر من جهة اتصال واحدة. يمكننا الوصول إلى هذا كجهة اتصال[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. من شريط التنقل الموجود على اليسار، انقر فوق rbases.
  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)

لاستخدام الأقواس المتعرجة في الاستعلام

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

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

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

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

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

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

SELECT * FROM Employees;

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

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

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

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

الخطوة 3) لرؤية جهات الاتصال الأولى للموظفين:

  1. اكتب الاستعلام التالي في محرر الاستعلام:
    SELECT name, contact[1]
    FROM Employees;
    
  2. انقر فوق الزر "تنفيذ".

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

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

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

الخطوة 4) لدمج عبارة SELECT مع جملة WHERE:

  1. اكتب الأمر التالي في محرر الاستعلام:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. انقر فوق الزر "تنفيذ".

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

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

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

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

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

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

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

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

الخطوة 3)

1. اكتب الأمر التالي في محرر الاستعلام للتحقق مما إذا كان التغيير ناجحًا:

SELECT * FROM Employees;

2. انقر فوق الزر "تنفيذ".

تعديل 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

الملخص

  • PostgreSQL يسمح لنا بتعريف عمود الجدول كنوع صفيف.
  • يجب أن تكون المصفوفة صالحة نوع البيانات مثل الأعداد الصحيحة أو الأحرف أو الأنواع المعرفة من قبل المستخدم.
  • لإدراج قيم في عمود مصفوفة، نستخدم مُنشئ ARRAY.
  • إذا كان هناك أكثر من عنصر واحد في نفس الصف من عمود المصفوفة، فإن العنصر الأول يكون في الموضع 1.
  • يمكن الوصول إلى كل قيمة عن طريق تمرير رمز سفلي بين قوسين مربعين [].
  • يمكن استرجاع عناصر المصفوفة باستخدام عبارة SELECT.
  • يمكن وضع قيم عمود المصفوفة بين أقواس مربعة [] أو أقواس متعرجة {}.
  • يمكننا البحث عن قيم أعمدة المصفوفة باستخدام الدالة ANY().

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