PostgreSQL Array: Funktioner, Type, Eksempel
Hvad er PostgreSQL Array?
In PostgreSQL, kan vi definere en kolonne som en rรฆkke gyldige datatyper. Datatypen kan vรฆre indbygget, brugerdefineret eller opregnet type. Bortset fra dette spiller arrays en vigtig rolle i PostgreSQL.
Hver tilsvarende PostgreSQL datatypen leveres med en relevant matrixtype. For eksempel har heltalsdatatypen integer[] matrixtypen, karakterdatatypen har karakter[] matrixtypen 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, det vil sige kontakt, er blevet indsat som en matrix. Dette er opnรฅet ved brug af ARRAY-konstruktรธren.
I dette eksempel har vi sat dem i firkantede parenteser []. Vi har to kontakter til 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 pรฅ elementerne i et array bruger vi SELECT-sรฆtningen.
For at se indholdet af vores medarbejdertabel kรธrer vi fรธlgende kommando:
SELECT * FROM Employees;
Dette returnerer fรธlgende:
Elementerne i matrixkolonnen, det vil sige kontakt, er blevet omsluttet af krรธllede klammeparenteser {}.
For at fรฅ adgang til selve array-elementerne tilfรธjer vi et subscript inden for firkantede parenteser []. Det fรธrste element i et array er pรฅ position 1.
For eksempel skal vi fรฅ navne pรฅ medarbejdere og kun deres fรธrste kontakt for de medarbejdere med mere end รฉn kontakt. Vi kan fรฅ adgang til dette som kontakt[1].
Lad os se dette:
SELECT name, contact[1] FROM Employees;
Dette vil returnere fรธlgende:
Vi kan bruge SELECT-sรฆtningen sammen med WHERE-sรฆtningen til at filtrere rรฆkker baseret pรฅ array-kolonnen.
For for eksempel 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 positionen i kontaktgruppen, kan vi bruge ANY()-funktionen 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 af en matrix i rรฆkker. Denne proces er kendt som matrixudvidelse.
I eksemplet med tabellen Medarbejdere er der nogle medarbejdere med to kontakter i kontaktarrayet. Vi kan opdele disse i separate rรฆkker.
PostgreSQL giver unnest()-funktionen, 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 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)
- Fra navigationslinjen til venstre - Klik pรฅ rbases.
- 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 seler i forespรธrgslen
Trin 1) Indtast 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"}'
);
Trin 2) Klik 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 med medarbejdere:
- Indtast fรธlgende forespรธrgsel i forespรธrgselseditoren:
SELECT name, contact[1] FROM Employees;
- Klik pรฅ knappen Udfรธr.
Det skal returnere fรธlgende:
Trin 4) For at kombinere SELECT-sรฆtningen med WHERE-sรฆtningen:
- Indtast fรธlgende kommando i forespรธrgselseditoren:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Klik pรฅ knappen Udfรธr.
Det skal returnere fรธlgende:
รndring PostgreSQL Array
Trin 1) For at opdatere brugerens anden kontaktperson med id 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)
1. Indtast fรธlgende kommando i forespรธrgselseditoren for at kontrollere, om รฆndringen lykkedes:
SELECT * FROM Employees;
2. Klik pรฅ knappen Udfรธr.
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:
Resumรฉ
- PostgreSQL giver os mulighed for at definere en tabelkolonne som en matrixtype.
- Arrayet skal vรฆre gyldigt datatype sรฅsom heltal, tegn eller brugerdefinerede typer.
- For at indsรฆtte vรฆrdier i en matrixkolonne bruger vi ARRAY-konstruktรธren.
- Hvis der er mere end รฉt element i den samme rรฆkke i en matrixkolonne, er det fรธrste element pรฅ position 1.
- Hver vรฆrdi kan tilgรฅs ved at sende et sรฆnket skrift inden for firkantede parenteser [].
- Elementerne i arrayet kan hentes ved hjรฆlp af SELECT-sรฆtningen.
- Vรฆrdierne for matrixkolonnen kan vรฆre omgivet af firkantede parenteser [] eller krรธllede klammer {}.
- Vi kan sรธge efter matrixkolonnevรฆrdier ved hjรฆlp af ANY()-funktionen.






























