PostgreSQL المصفوفة: الوظائف، النوع، المثال
ما هي تفاصيل PostgreSQL مجموعة مصفوفة؟
In PostgreSQLيمكننا تعريف العمود على أنه مصفوفة من أنواع البيانات الصالحة. يمكن أن يكون نوع البيانات مدمجًا، أو محددًا من قبل المستخدم، أو نوعًا معدودًا. بخلاف ذلك، تلعب المصفوفات دورًا مهمًا في PostgreSQL.
كل المقابلة PostgreSQL يأتي نوع البيانات مع نوع الصفيف ذي الصلة. على سبيل المثال، يحتوي نوع البيانات العددي على نوع الصفيف عدد صحيح[]، ونوع بيانات الحرف يحتوي على نوع الصفيف الحرف[]، وما إلى ذلك.
خلق PostgreSQL المصفوفات
في المثال التالي، سنقوم بإنشاء جدول باسم "الموظفين" مع تحديد عمود جهة الاتصال كمصفوفة نصية:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
يجب تشغيل الأمر بنجاح.
إدراج PostgreSQL قيم المصفوفة
دعونا الآن أدخل القيم في الجدول أعلاه:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
يجب أن يتم تشغيل الإدراج بنجاح.
تم إدراج قيم العمود الثالث، أي جهة الاتصال، كمصفوفة. تم تحقيق ذلك باستخدام مُنشئ ARRAY.
في هذا المثال، قمنا بوضعهم بين قوسين مربعين []. لدينا جهتا اتصال للموظفة أليس جون.
لا يزال من الممكن لنا استخدام الأقواس المتعرجة {} كما هو موضح أدناه:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
يجب أن يعمل الأمر بنجاح.
ستؤدي العبارات أعلاه إلى إدراج صفين في جدول الموظفين. عند استخدام الأقواس المتعرجة، يتم وضع المصفوفة داخل علامتي اقتباس مفردتين (') بينما يتم وضع عناصر المصفوفة النصية داخل علامتي اقتباس مزدوجتين (“).
الاستعلام عن بيانات المصفوفة
للاستعلام عن عناصر المصفوفة، نستخدم عبارة 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 مجموعة
يمكنك تحديث كل أو عنصر واحد من المصفوفة.
فيما يلي محتويات جدول الموظفين:
دعونا نقوم بتحديث رقم الهاتف الثاني للموظف جيمس بوش ورقم تعريفه 3:
قم بتشغيل الأمر التالي:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
يجب أن يعمل الأمر بنجاح:
دعونا نقوم بالاستعلام عن الجدول للتحقق من نجاح التغيير:
كان التغيير ناجحا.
البحث في PostgreSQL مجموعة
حاليًا، جدول الموظفين لدينا هو كما يلي:
لنفترض أننا بحاجة إلى معرفة من يملك جهة الاتصال (408)-783-5731 بغض النظر عن موقعها داخل مصفوفة جهات الاتصال، فيمكننا استخدام الدالة ANY() كما هو موضح أدناه:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
سيؤدي هذا إلى إرجاع ما يلي:
توسيع المصفوفات
يمكننا تقسيم قيم المصفوفة إلى صفوف. تُعرف هذه العملية بتوسيع المصفوفة.
في مثال جدول الموظفين، يوجد بعض الموظفين لديهم جهتي اتصال في مصفوفة جهات الاتصال. يمكننا تقسيمها إلى صفوف منفصلة.
PostgreSQL يوفر وظيفة unnest() التي يمكن استخدامها لهذا الغرض.
فمثلا:
SELECT name, unnest(contact) FROM Employees;
سيؤدي هذا إلى إرجاع ما يلي:
الموظفون أليس جون وجيمس بوش لديهما جهة اتصال. يمكننا تقسيمها إلى صفوف منفصلة.
باستخدام pgAdmin
خلق PostgreSQL المصفوفات
لإنجاز الأمر نفسه من خلال pgAdmin، قم بما يلي:
الخطوة 1) قم بتسجيل الدخول إلى حساب pgAdmin الخاص بك.
الخطوة 2)
- من شريط التنقل الموجود على اليسار، انقر فوق rbases.
- انقر على زر العرض التوضيحي
الخطوة 3) اكتب الاستعلام في محرر الاستعلام لإنشاء جدول الموظفين:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
الخطوة 4) انقر فوق الزر "تنفيذ".
إدراج PostgreSQL قيم المصفوفة
الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
الخطوة 2) انقر فوق الزر تنفيذ:
الخطوة 3)
لاستخدام الأقواس المتعرجة في الاستعلام
الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
الخطوة 2) انقر فوق الزر "تنفيذ":
الاستعلام عن بيانات المصفوفة
الخطوة 1) لرؤية محتويات جدول الموظفين، اكتب الاستعلام التالي في محرر الاستعلام:
SELECT * FROM Employees;
الخطوة 2) انقر فوق الزر تنفيذ:
ينبغي أن يعود ما يلي:
الخطوة 3) لرؤية جهات الاتصال الأولى للموظفين:
- اكتب الاستعلام التالي في محرر الاستعلام:
SELECT name, contact[1] FROM Employees;
- انقر فوق الزر "تنفيذ".
ينبغي أن يعود ما يلي:
الخطوة 4) لدمج عبارة SELECT مع جملة WHERE:
- اكتب الأمر التالي في محرر الاستعلام:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- انقر فوق الزر "تنفيذ".
ينبغي أن يعود ما يلي:
تعديل PostgreSQL مجموعة
الخطوة 1) لتحديث جهة الاتصال الثانية للمستخدم الذي يحمل معرف 3، قم بتشغيل الأمر التالي:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
الخطوة 2) انقر فوق الزر "تنفيذ".
الخطوة 3)
1. اكتب الأمر التالي في محرر الاستعلام للتحقق مما إذا كان التغيير ناجحًا:
SELECT * FROM Employees;
2. انقر فوق الزر "تنفيذ".
ينبغي أن يعود ما يلي:
البحث في PostgreSQL مجموعة
الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
الخطوة 2) انقر فوق الزر "تنفيذ".
ينبغي أن يعود ما يلي:
توسيع المصفوفات
الخطوة 1) اكتب الاستعلام التالي في محرر الاستعلام:
SELECT name, unnest(contact) FROM Employees;
الخطوة 2) انقر فوق الزر "تنفيذ".
ينبغي أن يعود ما يلي:
الملخص
- PostgreSQL يسمح لنا بتعريف عمود الجدول كنوع صفيف.
- يجب أن تكون المصفوفة صالحة نوع البيانات مثل الأعداد الصحيحة أو الأحرف أو الأنواع المعرفة من قبل المستخدم.
- لإدراج قيم في عمود مصفوفة، نستخدم مُنشئ ARRAY.
- إذا كان هناك أكثر من عنصر واحد في نفس الصف من عمود المصفوفة، فإن العنصر الأول يكون في الموضع 1.
- يمكن الوصول إلى كل قيمة عن طريق تمرير رمز سفلي بين قوسين مربعين [].
- يمكن استرجاع عناصر المصفوفة باستخدام عبارة SELECT.
- يمكن وضع قيم عمود المصفوفة بين أقواس مربعة [] أو أقواس متعرجة {}.
- يمكننا البحث عن قيم أعمدة المصفوفة باستخدام الدالة ANY().
قم بتنزيل قاعدة البيانات المستخدمة في هذا البرنامج التعليمي