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

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

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

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

δημιουργία 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.

Για να δούμε τα περιεχόμενα του πίνακα Υπαλλήλων μας, εκτελούμε την ακόλουθη εντολή:

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

Ας ενημερώσουμε τον δεύτερο αριθμό τηλεφώνου του υπαλλήλου 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. Από τη γραμμή πλοήγησης στα αριστερά - Κάντε κλικ στο 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().

Κάντε λήψη της βάσης δεδομένων που χρησιμοποιείται σε αυτό το σεμινάριο