PostgreSQL Array: Funktioner, Type, Eksempel
โก Smart opsummering
PostgreSQL Med Array kan du definere en tabelkolonne som et array af enhver gyldig datatype. Det dรฆkker oprettelse af arraykolonner, indsรฆttelse af vรฆrdier med ARRAY-konstruktรธren eller krรธllede parenteser, forespรธrgsler om og รฆndring af elementer og sรธgning med ANY().

Hvad er PostgreSQL Array?
In PostgreSQL, kan vi definere en kolonne som et array af gyldige datatyper. Datatypen kan vรฆre indbygget, brugerdefineret eller en optรฆllet type. Derudover spiller arrays en vigtig rolle i PostgreSQL.
Hver tilsvarende PostgreSQL Datatypen leveres med en relevant arraytype. For eksempel har integer-datatypen integer[] arraytypen, character-datatypen har character[] arraytypen osv.
Oprettelse af PostgreSQL Arrays
I det fรธlgende eksempel vil vi oprette en tabel med navnet Medarbejdere med kontaktkolonnen defineret som et tekstarray:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Kommandoen skal kรธre med succes.
Indsรฆttelse PostgreSQL Array vรฆrdier
Lad os nu INSERT vรฆrdier i ovenstรฅende tabel:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Indsรฆttelsen skal kรธre med succes.
Vรฆrdierne i den tredje kolonne, dvs. kontakt, er blevet indsat som et array. Dette er opnรฅet ved hjรฆlp af ARRAY-konstruktรธren. I dette eksempel har vi omsluttet dem i firkantede parenteser []. Vi har to kontakter for medarbejderen Alice John.
Det er stadig muligt for os at bruge krรธllede seler {} som vist nedenfor:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Kommandoen skal kรธre med succes.
Ovenstรฅende udsagn vil indsรฆtte to rรฆkker i tabellen Medarbejdere. Nรฅr du bruger krรธllede klammeparenteser, er arrayet pakket ind i enkelte anfรธrselstegn ('), mens tekstarray-elementerne er pakket ind i dobbelte anfรธrselstegn (").
Forespรธrgsel pรฅ matrixdata
For at forespรธrge elementerne i et array bruger vi SELECT-sรฆtningen. For at se indholdet af vores Employees-tabel kรธrer vi fรธlgende kommando:
SELECT * FROM Employees;
Dette returnerer fรธlgende:
Elementerne i arraykolonnen, dvs. kontakt, er omsluttet af krรธllede parenteser {}. For at fรฅ adgang til selve arrayelementerne tilfรธjer vi et sรฆnket skrift i firkantede parenteser []. Det fรธrste element i et array er pรฅ position 1.
For eksempel skal vi have navnene pรฅ medarbejdere og kun deres fรธrste kontaktperson for de medarbejdere med mere end รฉn kontaktperson. Vi kan tilgรฅ dette som kontaktperson[1]. Lad os se pรฅ dette:
SELECT name, contact[1] FROM Employees;
Dette vil returnere fรธlgende:
Vi kan bruge SELECT-sรฆtningen sammen med WHERE-klausulen til at filtrere rรฆkker baseret pรฅ array-kolonnen. For eksempel, for at se medarbejderen med (408)-567-78234 som den anden kontakt, kan vi kรธre fรธlgende kommando:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Dette vil returnere fรธlgende:
รndring PostgreSQL Array
Du kan opdatere hele eller et enkelt element i et array. Her er indholdet af tabellen Medarbejdere:
Lad os opdatere det andet telefonnummer pรฅ medarbejderen James Bush, hvis id er 3:
Kรธr fรธlgende kommando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Kommandoen skal kรธre med succes:
Lad os forespรธrge i tabellen for at kontrollere, om รฆndringen lykkedes:
รndringen lykkedes.
Sรธger i en PostgreSQL Array
I รธjeblikket ser vores tabel med medarbejdere ud som fรธlger:
Antag, at vi har brug for at vide, hvem der ejer kontakten (408)-783-5731, uanset placeringen i kontaktarrayet. Vi kan bruge funktionen ANY() som vist nedenfor:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Dette vil returnere fรธlgende:
Udvidelse af arrays
Vi kan opdele vรฆrdierne i et array i rรฆkker. Denne proces kaldes arrayudvidelse. I eksemplet med tabellen Medarbejdere er der nogle medarbejdere med to kontakter i kontaktarrayet. Vi kan opdele disse i separate rรฆkker. PostgreSQL leverer funktionen unnest(), der kan bruges til dette. For eksempel:
SELECT name, unnest(contact) FROM Employees;
Dette vil returnere fรธlgende:
Medarbejderne Alice John og James Bush har to kontakter. Vi kan opdele disse i separate rรฆkker.
Bruger pgAdmin
Oprettelse af PostgreSQL Arrays
For at opnรฅ det samme gennem pgAdmin, gรธr dette:
Trin 1) Log ind pรฅ din pgAdmin-konto.
Trin 2)
- Klik pรฅ Databaser i navigationslinjen til venstre.
- Klik pรฅ Demo-knappen.
Trin 3) Indtast forespรธrgslen i forespรธrgselseditoren for at oprette tabellen Medarbejdere:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Trin 4) Klik pรฅ knappen Udfรธr.
Indsรฆttelse PostgreSQL Array vรฆrdier
Trin 1) Indtast fรธlgende forespรธrgsel i forespรธrgselseditoren:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Trin 2) Klik pรฅ knappen Udfรธr:
Trin 3) For at bruge krรธllede parenteser i forespรธrgslen skal du skrive fรธlgende forespรธrgsel i forespรธrgselseditoren:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Klik derefter pรฅ knappen Udfรธr:
Forespรธrgsel pรฅ matrixdata
Trin 1) For at se indholdet af tabellen Medarbejdere skal du skrive fรธlgende forespรธrgsel i forespรธrgselseditoren:
SELECT * FROM Employees;
Trin 2) Klik pรฅ knappen Udfรธr:
Det skal returnere fรธlgende:
Trin 3) For at se de fรธrste kontakter fra medarbejdere skal du skrive fรธlgende forespรธrgsel i forespรธrgselseditoren og klikke pรฅ knappen Udfรธr:
SELECT name, contact[1] FROM Employees;
Det skal returnere fรธlgende:
Trin 4) For at kombinere SELECT-sรฆtningen med WHERE-klausulen skal du skrive fรธlgende kommando i forespรธrgselseditoren og klikke pรฅ knappen Udfรธr:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Det skal returnere fรธlgende:
รndring PostgreSQL Array
Trin 1) For at opdatere brugerens anden kontakt med et id pรฅ 3, skal du kรธre fรธlgende kommando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Trin 2) Klik pรฅ knappen Udfรธr.
Trin 3) Skriv fรธlgende kommando i forespรธrgselseditoren for at kontrollere, om รฆndringen var vellykket, og klik derefter pรฅ knappen Udfรธr:
SELECT * FROM Employees;
Det skal returnere fรธlgende:
Sรธger i en PostgreSQL Array
Trin 1) Indtast fรธlgende forespรธrgsel i forespรธrgselseditoren:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Trin 2) Klik pรฅ knappen Udfรธr.
Det skal returnere fรธlgende:
Udvidelse af arrays
Trin 1) Indtast fรธlgende forespรธrgsel i forespรธrgselseditoren:
SELECT name, unnest(contact) FROM Employees;
Trin 2) Klik pรฅ knappen Udfรธr.
Det skal returnere fรธlgende:
Download databasen brugt i denne vejledning






























