مصطفى عطا العايش

سنستخدم صدفة psql طوال الوقت في هذا الدليل، وسنستخدم بعض الرايات فيها أيضًا، لذا سنخصص هذا المقال للتعرف على بعض أهم الأوامر فيها.

صدفة psql هي برنامج الواجهة التفاعلية للاتصال بـ Postgres ولها العديد من الرايات للتحكم بالاتصال منها:

  • الراية ‎-h لتحديد المضيف المراد الاتصال به (سواء عن طريق عنوان IP أو عن طريق اسم المضيف إن كان يمكن لخادوم DNS التعرف إليه)
  • الراية ‎-U لتحديد اسم المستخدم المراد الاتصال من خلاله
  • الراية ‎-p المنفَذ port المراد الاتصال عبره (المنفذ الافتراضي هو 5423)
psql -h localhost -U username hsoubguide

كما يمكن استخدام سلسلة نصية كاملة كوسيط واحد، تحتوي محددات الدخول إلى قاعدة البيانات:

psql "dbname=hsoubguide host=10.11.108.107 user=postgres password=pass123456 port=5432 sslmode=require"

بعد نجاح الاتصال يمكن البدء بتطبيق الاستعلامات، كما يمكن استخدام أوامر معينة، ويمكن تنفيذ الأمر ‎\?‎ للحصول على قائمة بجميع الأوامر المتاحة، والتي سنشرح بعضًا من أهمها في الفقرات التالية.

أوامر استعراض قاعدة البيانات والجداول

استعراض جميع قواعد البيانات الموجودة

استخدم الأمر '‎\l' لاستعراض قائمة بجميع قواعد البيانات المخزّنة:

hsoubguide=# \l

                                  List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
------------+----------+----------+-------------+-------------+-----------------------
 hsoubguide | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 postgres   | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 template0  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
 template1  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
(4 rows)

استعراض جميع قواعد البيانات مع معلومات إضافية

بإضافة الرمز + إلى الأمر ‎\l يمكن عرض قائمة لجميع قواعد البيانات المخزنة مع معلومات إضافية عن كل منها.

hsoubguide=# \l+

                                                                    List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description             

------------+----------+----------+-------------+-------------+-----------------------+---------+------------+----------------------------------------
----
 hsoubguide | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 |                       | 8273 kB | pg_default | 
 postgres   | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 |                       | 8345 kB | pg_default | default administrative connection datab
ase
 template0  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +| 8049 kB | pg_default | unmodifiable empty database
            |          |          |             |             | postgres=CTc/postgres |         |            | 
 template1  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres          +| 8049 kB | pg_default | default template for new databases
            |          |          |             |             | postgres=CTc/postgres |         |            | 
(4 rows)

استعراض الجداول في قاعدة البيانات

لاستعراض قائمة بالجداول الموجودة في قاعدة البيانات، نستخدم الأمر ‎\dt كما يلي:

hsoubguide=# \dt

                List of relations
 Schema |         Name         | Type  |  Owner   
--------+----------------------+-------+----------
 public | basket_a             | table | postgres
 public | basket_b             | table | postgres
 public | departments          | table | postgres
 public | employee_departments | table | postgres
 public | employees            | table | postgres
 public | marks                | table | postgres
 public | names                | table | postgres
 public | phones               | table | postgres
 public | products             | table | postgres
 public | purchase_items       | table | postgres
 public | purchases            | table | postgres
 public | size_calc            | table | postgres
 public | student              | table | postgres
 public | table1               | table | postgres
 public | table2               | table | postgres
 public | test_explain         | table | postgres
 public | test_table           | table | postgres
 public | users                | table | postgres
 public | users2               | table | postgres
(19 rows)

وصف جدول

لوصف جدول، نستخدم الأمر ‎\d مع اسم الجدول كما يلي:

hsoubguide=# \d employees

                      Table "public.employees"
  Column   |         Type          | Collation | Nullable | Default 
-----------+-----------------------+-----------+----------+---------
 id        | integer               |           | not null | 
 last_name | character varying(55) |           |          | 
 salary    | integer               |           |          | 
Indexes:
    "employees_pkey" PRIMARY KEY, btree (id)

استعراض الجداول مع بعض المعلومات الإضافية

بإضافة الرمز + إلى أي أمر من أوامر الاستعراض، فإنها تضيف إلى المخرجات المزيد من المعلومات، فعند إضافة الرمز + إلى الأمر ‎\dt يمكننا استعراض المزيد من المعلومات عن الجداول الموجودة في قاعدة البيانات:

hsoubguide=# \dt+

                              List of relations
 Schema |         Name         | Type  |  Owner   |    Size    | Description 
--------+----------------------+-------+----------+------------+-------------
 public | basket_a             | table | postgres | 8192 bytes | 
 public | basket_b             | table | postgres | 8192 bytes | 
 public | departments          | table | postgres | 8192 bytes | 
 public | employee_departments | table | postgres | 8192 bytes | 
 public | employees            | table | postgres | 8192 bytes | 
 public | marks                | table | postgres | 8192 bytes | 
 public | names                | table | postgres | 8192 bytes | 
 public | phones               | table | postgres | 8192 bytes | 
 public | products             | table | postgres | 16 kB      | 
 public | purchase_items       | table | postgres | 304 kB     | 
 public | purchases            | table | postgres | 96 kB      | 
 public | size_calc            | table | postgres | 0 bytes    | 
 public | student              | table | postgres | 16 kB      | 
 public | table1               | table | postgres | 8192 bytes | 
 public | table2               | table | postgres | 8192 bytes | 
 public | test_explain         | table | postgres | 8192 bytes | 
 public | test_table           | table | postgres | 8192 bytes | 
 public | users                | table | postgres | 16 kB      | 
 public | users2               | table | postgres | 8192 bytes | 
(19 rows)

وصف جدول مع معلومات إضافية

للحصول على المزيد من المعلومات عن جدول ما، يمكننا استخدام الرمز + مع الأمر '‎\d' وبعدها اسم الجدول:

hsoubguide=# \d+ users

                                                           Table "public.users"
   Column   |           Type           | Collation | Nullable |              Default              | Storage  | Stats target | Description 
------------+--------------------------+-----------+----------+-----------------------------------+----------+--------------+-------------
 id         | integer                  |           | not null | nextval('users_id_seq'::regclass) | plain    |              | 
 email      | character varying(255)   |           |          |                                   | extended |              | 
 password   | character varying(255)   |           |          |                                   | extended |              | 
 details    | hstore                   |           |          |                                   | extended |              | 
 created_at | timestamp with time zone |           |          |                                   | plain    |              | 
 deleted_at | timestamp with time zone |           |          |                                   | plain    |              | 
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "purchases" CONSTRAINT "purchases_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)
Access method: heap

استعراض المستخدمين وخصائصهم

بتنفيذ الأمر ‎\dg يمكننا استعراض قائمة الأدوار، وهي قائمة المستخدمين وخصائص كل منهم، كما يلي:

hsoubguide=# \dg

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 mostafa   |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

أوامر أخرى أساسية

تحرير الاستعلامات في محرر النصوص

يمكن فتح مخزن الاستعلامات ضمن محرر النصوص الافتراضي (مثل vi أو nano) داخل صدَفَة psql باستخدام الأمر ‎\e وهو مفيد لكتابة الاستعلامات الطويلة وتحريرها قبل تنفيذها، وعند فتحه سنجده يحوي آخر استعلام تمت كتابته، مما يسمح لنا بتعديله لإعادة تنفيذه.

كما يمكن استعراض آخر محتويات هذا المخزن باستخدام الأمر ‎\p.

hsoubguide=# SELECT *
hsoubguide-# FROM products
hsoubguide-# LIMIT
hsoubguide-# 1
hsoubguide-# ;
 id |   title    | price |       created_at       | deleted_at |  tags  
----+------------+-------+------------------------+------------+--------
  1 | Dictionary |  9.99 | 2011-01-01 22:00:00+02 |            | {Book}
(1 row)

hsoubguide=# \p
SELECT *
FROM products
LIMIT
1
;

تشغيل توقيت الاستعلام

في الحالة الافتراضية لا يكون توقيت تنفيذ الاستعلام مُتاحًا للعرض، ولكن يمكننا تفعيله من خلال الأمر التالي:

hsoubguide=# SELECT * FROM products LIMIT 1;
 id |   title    | price |       created_at       | deleted_at |  tags  
----+------------+-------+------------------------+------------+--------
  1 | Dictionary |  9.99 | 2011-01-01 22:00:00+02 |            | {Book}
(1 row)

Time: 0.723 ms

حيث سيتيح ذلك الأمر إظهار توقيت الاستعلام بالميلي ثانية.

الحصول على مساعدة بخصوص تعليمات SQL

يمكن استخدام الأمر '‎\h' يليه اسم التعليمة في SQL لعرض التوثيق الخاص بهذه التعليمة:

hsoubguide=# \h VACUUM 
Command:     VACUUM
Description: garbage-collect and optionally analyze a database
Syntax:
VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]

where option can be one of:

    FULL [ boolean ]
    FREEZE [ boolean ]
    VERBOSE [ boolean ]
    ANALYZE [ boolean ]
    DISABLE_PAGE_SKIPPING [ boolean ]
    SKIP_LOCKED [ boolean ]
    INDEX_CLEANUP [ boolean ]
    TRUNCATE [ boolean ]

and table_and_columns is:

    table_name [ ( column_name [, ...] ) ]

URL: https://www.postgresql.org/docs/12/sql-vacuum.html

الخروج من صدفة postgres

قد تقضي وقتًا طويلًا داخل صدفة psql، ليس حبًّا بها، ولكن لعدم معرفة كيفية الخروج منها، لذلك لا تنسَ أن الأمر ‎\q هو الذي يُخرجك من صدفة psql.

hsoubguide=# \q
bash-4.2$ 

الخلاصة

تعرفنا في هذا الفصل على الأوامر الأكثر استخدامًا في صدفة psql، ولكن لا يزال هناك العديد من الأوامر الأخرى التي يمكنك استعراضها من خلال الأمر ‎\?‎.

اقرأ أيضًا





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن