PostgreSQL Array: funzioni, tipo, esempio
⚡ Riepilogo intelligente
PostgreSQL Array consente di definire una colonna di tabella come un array di qualsiasi tipo di dati valido. Il manuale illustra come creare colonne di tipo array, inserire valori con il costruttore ARRAY o con le parentesi graffe, interrogare e modificare gli elementi e cercare con ANY().
Cosa è PostgreSQL Vettore?
In PostgreSQL, possiamo definire una colonna come un array di tipi di dati validi. Il tipo di dati può essere predefinito, definito dall'utente o un tipo enumerato. Oltre a questo, gli array svolgono un ruolo importante in PostgreSQL.
Ogni corrispondente PostgreSQL A ogni tipo di dato corrisponde un tipo di array. Ad esempio, il tipo di dato intero ha il tipo di array integer[], il tipo di dato carattere ha il tipo di array character[] e così via.
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, ovvero "contatti", sono stati inseriti come un array. Ciò è stato possibile grazie all'utilizzo del 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 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 Employees, eseguiamo il seguente comando:
SELECT * FROM Employees;
Questo restituisce quanto segue:
Gli elementi della colonna dell'array, ovvero "contact", sono racchiusi tra parentesi graffe {}. Per accedere agli elementi dell'array, si aggiunge 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 quei dipendenti che hanno più di un contatto. Possiamo accedere a questo come contact[1]. Vediamo un esempio:
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 visualizzare 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 tutti gli elementi di un array o un singolo elemento. Ecco il contenuto della tabella Dipendenti:
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 a chi appartiene il contatto (408)-783-5731, indipendentemente dalla posizione all'interno dell'array dei 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 suddividere 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 nell'array dei contatti. Possiamo suddividerli in righe separate. PostgreSQL fornisce la funzione unnest() che può essere utilizzata a questo scopo. Ad 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, fare clic su Database.
- Fai 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, digita 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"}' );
Quindi fai clic sul pulsante Esegui:
Interrogazione dei dati dell'array
Passo 1) Per visualizzare il contenuto della tabella Employees, digita la seguente query nell'editor di query:
SELECT * FROM Employees;
Passo 2) Fare clic sul pulsante Esegui:
Dovrebbe restituire quanto segue:
Passo 3) Per visualizzare i primi contatti dei dipendenti, digita la seguente query nell'editor di query e fai clic sul pulsante Esegui:
SELECT name, contact[1] FROM Employees;
Dovrebbe restituire quanto segue:
Passo 4) Per combinare l'istruzione SELECT con la clausola WHERE, digita il seguente comando nell'editor di query e fai clic sul pulsante Esegui:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
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) Digita il seguente comando nell'editor di query per verificare se la modifica è andata a buon fine, quindi fai clic sul pulsante Esegui:
SELECT * FROM Employees;
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:
Scarica il database utilizzato in questo tutorial































