PostgreSQL Array: funzioni, tipo, esempio
Che cos'è la PostgreSQL Vettore?
In PostgreSQL, possiamo definire una colonna come un array di tipi di dati validi. Il tipo di dati può essere incorporato, definito dall'utente o enumerato. Oltre a questo, gli array svolgono un ruolo importante PostgreSQL.
Ogni corrispondente PostgreSQL il tipo di dati viene fornito con un tipo di array pertinente. Ad esempio, il tipo di dati intero ha il tipo di array intero[], il tipo di dati carattere ha il tipo di array carattere[], ecc.
Creazione PostgreSQL Array
Nell'esempio seguente creeremo una tabella denominata Dipendenti con la colonna dei contatti definita come array di testo:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Il comando dovrebbe essere eseguito correttamente.
inserzione PostgreSQL Valori di matrice
Andiamo ora insert valori nella tabella sopra:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
L'inserimento dovrebbe essere eseguito correttamente.
I valori della terza colonna, cioè contact, sono stati inseriti come array. Ciò è stato ottenuto utilizzando il costruttore ARRAY.
In questo esempio, li abbiamo racchiusi tra parentesi quadre []. Abbiamo due contatti per il dipendente Alice John.
È ancora possibile utilizzare le parentesi graffe {} come mostrato di seguito:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Il comando dovrebbe essere eseguito correttamente.
Le istruzioni di cui sopra 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, utilizziamo l'istruzione SELECT.
Per visualizzare il contenuto della nostra tabella Dipendenti, eseguiamo il seguente comando:
SELECT * FROM Employees;
Questo restituisce quanto segue:
Gli elementi della colonna dell'array, ovvero contact, sono stati racchiusi tra parentesi graffe {}.
Per accedere agli elementi dell'array, aggiungiamo un indice tra parentesi quadre []. Il primo elemento di un array si trova in 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;
Verrà restituito quanto segue:
Possiamo utilizzare 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:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Verrà restituito quanto segue:
Modifica PostgreSQL Italia
È possibile aggiornare tutto o un singolo elemento di un array.
Ecco il contenuto della tabella Employees:
Aggiorniamo il secondo numero di telefono del dipendente James Bush, il cui ID è 3:
Eseguire il seguente comando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Il comando dovrebbe essere eseguito correttamente:
Interroghiamo la tabella per verificare se la modifica ha avuto successo:
Il cambiamento ha avuto successo.
Cercando in un PostgreSQL Italia
Attualmente, la nostra tabella Dipendenti è la seguente:
Supponiamo di dover sapere chi possiede il contatto (408)-783-5731 indipendentemente dalla posizione all'interno dell'array di contatti, possiamo utilizzare la funzione ANY() come mostrato di seguito:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Verrà restituito quanto segue:
Array espandibili
Possiamo dividere i valori di un array in righe. Questo processo è noto come espansione dell'array.
Nell'esempio della tabella Impiegati, sono presenti alcuni impiegati con due contatti nell'array contatti. Possiamo dividerli in righe separate.
PostgreSQL fornisce la funzione unnest() che può essere utilizzata a questo scopo.
Per esempio:
SELECT name, unnest(contact) FROM Employees;
Verrà restituito quanto segue:
I dipendenti Alice John e James Bush hanno due contatti. Possiamo dividerli in righe separate.
Utilizzando pgAdmin
Creazione PostgreSQL Array
Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fai clic su rbases.
- Fare clic sul pulsante Demo
Passo 3) Digita la query nell'editor di query per creare la tabella Employees:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Passo 4) Fare clic sul pulsante Esegui.
inserzione PostgreSQL Valori di matrice
Passo 1) Digitare la seguente query nell'editor di query:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Passo 2) Fare clic sul pulsante Esegui:
Passo 3)
Per utilizzare le parentesi graffe nella query
Passo 1) Digitare la seguente query nell'editor di query:
INSERT INTO Employees VALUES ( 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
Passo 1) Per visualizzare il contenuto della tabella Dipendenti, digitare la seguente query nell'editor di query:
SELECT * FROM Employees;
Passo 2) Fare clic sul pulsante Esegui:
Dovrebbe restituire quanto segue:
Passo 3) Per vedere i primi contatti dei dipendenti:
- Digitare la seguente query nell'editor di query:
SELECT name, contact[1] FROM Employees;
- Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Passo 4) Per combinare l'istruzione SELECT con la clausola WHERE:
- Digitare il seguente comando nell'editor di query:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Modifica PostgreSQL Italia
Passo 1) Per aggiornare il secondo contatto dell'utente con ID 3, eseguire il seguente comando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Passo 2) Fare clic sul pulsante Esegui.
Passo 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:
Cercando in un PostgreSQL Italia
Passo 1) Digitare la seguente query nell'editor di query:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Passo 2) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Array espandibili
Passo 1) Digitare la seguente query nell'editor di query:
SELECT name, unnest(contact) FROM Employees;
Passo 2) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Sommario
- PostgreSQL ci consente di definire una colonna di tabella come tipo array.
- L'array deve essere valido tipo di dati come numeri interi, caratteri o tipi definiti dall'utente.
- Per inserire valori in una colonna dell'array, utilizziamo il costruttore ARRAY.
- Se è presente più di un elemento nella stessa riga di una colonna di un array, il primo elemento si trova nella posizione 1.
- È possibile accedere a ciascun valore passando un indice tra parentesi quadre [].
- Gli elementi dell'array possono essere recuperati utilizzando l'istruzione SELECT.
- I valori della colonna array possono essere racchiusi tra parentesi quadre [] o graffe {}.
- Possiamo cercare i valori delle colonne dell'array utilizzando la funzione ANY().
Scarica il database utilizzato in questo tutorial