PostgreSQL Πίνακας: Λειτουργίες, Τύπος, Παράδειγμα

⚡ Έξυπνη Σύνοψη

PostgreSQL Ο πίνακας σάς επιτρέπει να ορίσετε μια στήλη πίνακα ως πίνακα οποιουδήποτε έγκυρου τύπου δεδομένων. Καλύπτει τη δημιουργία στηλών πίνακα, την εισαγωγή τιμών με τον κατασκευαστή ARRAY ή αγκύλες, την υποβολή ερωτημάτων και την τροποποίηση στοιχείων και την αναζήτηση με ANY().

  • 📦 Ορισμός: Κάθε PostgreSQL Ο τύπος δεδομένων έχει έναν αντίστοιχο τύπο πίνακα, όπως integer[].
  • 🧱 Δημιουργία και εισαγωγή: Χρησιμοποιήστε στήλες TEXT[] και τον κατασκευαστή ARRAY ή αγκύλες.
  • 🔎 Ερώτηση: Πρόσβαση σε στοιχεία με δείκτες. Το πρώτο στοιχείο βρίσκεται στη θέση 1.
  • Τροποποίηση και αναζήτηση: Ενημερώστε μεμονωμένα στοιχεία και αναζητήστε τιμές με ANY().
  • Επεκτείνουν: Η συνάρτηση unnest() χωρίζει τις τιμές των πινάκων σε ξεχωριστές γραμμές.

PostgreSQL Παράταξη

Τι είναι PostgreSQL Πίνακας?

In PostgreSQL, μπορούμε να ορίσουμε μια στήλη ως έναν πίνακα έγκυρων τύπων δεδομένων. Ο τύπος δεδομένων μπορεί να είναι ενσωματωμένος, οριζόμενος από τον χρήστη ή απαριθμημένος. Εκτός από αυτό, οι πίνακες παίζουν σημαντικό ρόλο στο PostgreSQL.

Κάθε αντίστοιχο PostgreSQL Ο τύπος δεδομένων συνοδεύεται από έναν σχετικό τύπο πίνακα. Για παράδειγμα, ο τύπος δεδομένων integer έχει τον τύπο πίνακα integer[], ο τύπος δεδομένων character έχει τον τύπο πίνακα character[] και ούτω καθεξής.

δημιουργία PostgreSQL Array

Στο παρακάτω παράδειγμα, θα δημιουργήσουμε έναν πίνακα με το όνομα Employees με τη στήλη επαφών να ορίζεται ως πίνακας κειμένου:

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

Η εντολή πρέπει να εκτελεστεί με επιτυχία.

δημιουργία PostgreSQL Array

Εισαγωγή PostgreSQL Τιμές Πίνακα

Άσε μας τώρα εισάγετε τιμές στον παραπάνω πίνακα:

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

Η εισαγωγή πρέπει να εκτελεστεί με επιτυχία.

Εισαγωγή PostgreSQL Τιμές Πίνακα

Οι τιμές της τρίτης στήλης, δηλαδή της επαφής, έχουν εισαχθεί ως πίνακας. Αυτό επιτεύχθηκε με τη χρήση του κατασκευαστή ARRAY. Σε αυτό το παράδειγμα, τις έχουμε περικλείσει μέσα σε αγκύλες []. Έχουμε δύο επαφές για την υπάλληλο Alice John.

Είναι ακόμα δυνατό να χρησιμοποιήσουμε σγουρά τιράντες {} όπως φαίνεται παρακάτω:

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

Η εντολή πρέπει να εκτελεστεί με επιτυχία.

Εισαγωγή PostgreSQL Τιμές Πίνακα

Οι παραπάνω δηλώσεις θα εισαγάγουν δύο σειρές στον πίνακα Εργαζόμενοι. Όταν χρησιμοποιείτε σγουρά στηρίγματα, ο πίνακας τυλίγεται μέσα σε μονά εισαγωγικά (') ενώ τα στοιχεία του πίνακα κειμένου είναι τυλιγμένα σε διπλά εισαγωγικά (“).

Ερώτηση δεδομένων πίνακα

Για να υποβάλουμε ερώτημα στα στοιχεία ενός πίνακα, χρησιμοποιούμε την πρόταση SELECT. Για να δούμε τα περιεχόμενα του πίνακα Employees, εκτελούμε την ακόλουθη εντολή:

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 Παράταξη

Μπορείτε να ενημερώσετε ολόκληρο ή ένα μόνο στοιχείο ενός πίνακα. Ακολουθούν τα περιεχόμενα του πίνακα Employees:

Τροποποίηση PostgreSQL Παράταξη

Ας ενημερώσουμε τον δεύτερο αριθμό τηλεφώνου του υπαλλήλου James Bush, του οποίου το αναγνωριστικό είναι 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;

Αυτό θα επιστρέψει τα ακόλουθα:

Επέκταση Πίνακες

Οι υπάλληλοι Alice John και James Bush έχουν δύο επαφές. Μπορούμε να τις χωρίσουμε σε ξεχωριστές σειρές.

Χρήση του pgAdmin

δημιουργία PostgreSQL Array

Για να πετύχετε το ίδιο μέσω του 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) Για να δείτε τα περιεχόμενα του πίνακα Employees, πληκτρολογήστε το ακόλουθο ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

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 χρησιμοποιώντας ARRAY ή άγκιστρα, και συναρτήσεις όπως 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') προσθέτει ένα νέο στοιχείο.

Συνοψίστε αυτήν την ανάρτηση με: