PostgreSQL Array: funzioni, tipo, esempio

Sommario:

Anonim

Cos'è PostgreSQL Array?

In PostgreSQL, possiamo definire una colonna come un array di tipi di dati validi. Il tipo di dati può essere un tipo predefinito, definito dall'utente o enumerato. Oltre a questo, gli array svolgono un ruolo importante in PostgreSQL.

Ogni tipo di dati PostgreSQL corrispondente viene fornito con un tipo di array pertinente. Ad esempio, il tipo di dati intero ha il tipo di matrice intero [], il tipo di dati carattere ha il tipo di matrice carattere [] e così via.

In questo tutorial su PostgreSQL imparerai:

  • Cos'è PostgreSQL Array?
  • Creazione di array PostgreSQL
  • Inserimento di valori di array PostgreSQL
  • Interrogazione dei dati dell'array
  • Modifica dell'array PostgreSQL
  • Ricerca in un array PostgreSQL
  • Espansione di array
  • Utilizzando pgAdmin

Creazione di array PostgreSQL

Nell'esempio seguente, creeremo una tabella denominata Employees con la colonna di contatto definita come matrice di testo:

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

Il comando dovrebbe essere eseguito correttamente.

Inserimento di valori di array PostgreSQL

Inseriamo ora i valori nella tabella sopra:

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

L'inserimento dovrebbe essere eseguito correttamente.

I valori della terza colonna, cioè contatto, sono stati inseriti come matrice. Ciò è stato ottenuto utilizzando il costruttore ARRAY.

In questo esempio, li abbiamo racchiusi tra parentesi quadre []. Abbiamo due contatti per la dipendente Alice John.

È ancora possibile utilizzare le parentesi graffe {} come mostrato di seguito:

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

Il comando dovrebbe essere eseguito correttamente.

Le istruzioni precedenti inseriranno due righe nella tabella Employees. Quando si usano le parentesi graffe, l'array è racchiuso tra virgolette singole (') mentre gli elementi dell'array di testo sono racchiusi tra virgolette doppie (").

Interrogazione dei dati dell'array

Per interrogare gli elementi di un array, usiamo l'istruzione SELECT.

Per vedere il contenuto della nostra tabella Employees, eseguiamo il seguente comando:

SELECT * FROM Employees;

Ciò restituisce quanto segue:

Gli elementi della colonna della matrice, ovvero il contatto, sono stati racchiusi tra parentesi graffe {}.

Per accedere agli stessi elementi dell'array, aggiungiamo un pedice tra parentesi quadre []. Il primo elemento in un array si trova nella posizione 1.

Ad esempio, dobbiamo ottenere i nomi dei dipendenti e solo il loro primo contatto per i dipendenti con più di un contatto. Possiamo accedervi come contatto [1].

Vediamo questo:

SELECT name, contact[1]FROM Employees;

Ciò restituirà quanto segue:

Possiamo usare l'istruzione SELECT insieme alla clausola WHERE per filtrare le righe in base alla colonna dell'array.

Ad esempio, per vedere il dipendente con (408) -567-78234 come secondo contatto, possiamo eseguire il seguente comando:

SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';

Ciò restituirà quanto segue:

Modifica dell'array PostgreSQL

È possibile aggiornare tutto o un singolo elemento di un array.

Ecco i contenuti della tabella Employees:

Aggiorniamo il secondo numero di telefono del dipendente James Bush, il cui ID è 3:

Esegui il seguente comando:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Il comando dovrebbe essere eseguito correttamente:

Cerchiamo di interrogare la tabella per verificare se la modifica è andata a buon fine:

Il cambiamento ha avuto successo.

Ricerca in un array PostgreSQL

Attualmente, la nostra tabella Dipendenti è la seguente:

Supponiamo di aver bisogno di sapere chi possiede il contatto (408) -783-5731 indipendentemente dalla posizione all'interno dell'array di contatti, possiamo usare la funzione ANY () come mostrato di seguito:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Ciò restituirà quanto segue:

Espansione di array

Possiamo dividere i valori di un array in righe. Questo processo è noto come espansione dell'array.

Nell'esempio della tabella Dipendenti, ci sono alcuni dipendenti con due contatti nella matrice dei contatti. Possiamo dividerli in righe separate.

PostgreSQL fornisce la funzione unest () che può essere utilizzata per questo.

Per esempio:

SELECTname,unnest(contact)FROMEmployees;

Ciò restituirà quanto segue:

I dipendenti Alice John e James Bush, hanno due contatti. Possiamo dividere in righe separate.

Utilizzando pgAdmin

Creazione di array PostgreSQL

Per ottenere lo stesso risultato tramite pgAdmin, procedere come segue:

Passaggio 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fare clic su rbase.
  2. Fare clic sul pulsante Demo

Passaggio 3) Digitare la query nell'editor di query per creare la tabella Impiegati:

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

Passaggio 4) Fare clic sul pulsante Esegui.

Inserimento di valori di array PostgreSQL

Passaggio 1) Digita la seguente query nell'editor di query:

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

Passaggio 2) Fare clic sul pulsante Esegui:

Passaggio 3)

Per utilizzare le parentesi graffe nella query

Passaggio 1) Digita la seguente query nell'editor di query:

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

Passaggio 2) Fare clic sul pulsante Esegui:

Interrogazione dei dati dell'array

Passaggio 1) Per visualizzare il contenuto della tabella Impiegati, digitare la seguente query nell'editor di query:

SELECT * FROM Employees;

Passaggio 2) Fare clic sul pulsante Esegui:

Dovrebbe restituire quanto segue:

Passaggio 3) Per vedere i primi contatti dei dipendenti:

  1. Digita la seguente query nell'editor di query:
    SELECT name, contact[1]FROM Employees;
  2. Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Passaggio 4) Per combinare l'istruzione SELECT con la clausola WHERE:

  1. Digita il seguente comando nell'editor di query:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Modifica dell'array PostgreSQL

Passaggio 1) Per aggiornare il secondo contatto dell'utente con ID 3, eseguire il seguente comando:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Passaggio 2) Fare clic sul pulsante Esegui.

Passaggio 3)

1.Digitare il seguente comando nell'editor di query per verificare se la modifica è stata eseguita correttamente:

SELECT * FROM Employees;

2.Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Ricerca in un array PostgreSQL

Passaggio 1) Digita la seguente query nell'editor di query:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Passaggio 2) Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Espansione di array

Passaggio 1) Digita la seguente query nell'editor di query:

SELECTname,unnest(contact)FROMEmployees;

Passaggio 2) Fare clic sul pulsante Esegui.

Dovrebbe restituire quanto segue:

Sommario:

  • PostgreSQL ci consente di definire una colonna di tabella come un tipo di array.
  • L'array deve essere di un tipo di dati valido come numeri interi, caratteri o tipi definiti dall'utente.
  • Per inserire valori in una colonna di array, utilizziamo il costruttore ARRAY.
  • Se sono presenti più elementi nella stessa riga di una colonna di matrice, il primo elemento si trova nella posizione 1.
  • È possibile accedere a ciascun valore passando un pedice tra parentesi quadre [].
  • Gli elementi dell'array possono essere recuperati utilizzando l'istruzione SELECT.
  • I valori della colonna della matrice possono essere racchiusi tra parentesi quadre [] o parentesi graffe {}.
  • Possiamo cercare i valori della colonna dell'array utilizzando la funzione ANY ().

Scarica il database utilizzato in questo tutorial