PostgreSQL Matrise: Funksjoner, Type, Eksempel
Hva er PostgreSQL Array?
In PostgreSQL, kan vi definere en kolonne som en rekke gyldige datatyper. Datatypen kan vรฆre innebygd, brukerdefinert eller opplistet type. Annet enn dette spiller arrays en viktig rolle i PostgreSQL.
Hver tilsvarende PostgreSQL datatypen kommer med en relevant matrisetype. For eksempel har heltallsdatatypen integer[] matrisetypen, karakterdatatypen har karakter[] matrisetypen, osv.
Opprette PostgreSQL arrays
I fรธlgende eksempel vil vi lage en tabell med navnet Ansatte med kontaktkolonnen definert som en tekstmatrise:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Kommandoen skal kjรธre vellykket.
Sette PostgreSQL Matriseverdier
La oss nรฅ Sett verdier i tabellen ovenfor:
INSERT INTO Employees
VALUES
(
1,
'Alice John',
ARRAY [ '(408)-743-9045',
'(408)-567-7834' ]
);
Innsettingen skal kjรธre vellykket.
Verdiene til den tredje kolonnen, det vil si kontakt, er satt inn som en matrise. Dette er oppnรฅdd ved bruk av ARRAY-konstruktรธren.
I dette eksemplet har vi satt dem innenfor firkantede parenteser []. Vi har to kontakter for den ansatte Alice John.
Det er fortsatt mulig for oss รฅ bruke bukseseler {} som vist nedenfor:
INSERT INTO Employees
VALUES
(
2,
'Kate Joel',
'{"(408)-783-5731"}'
),
(
3,
'James Bush',
'{"(408)-745-8965","(408)-567-78234"}'
);
Kommandoen skal kjรธre vellykket.
Utsagnene ovenfor vil sette inn to rader i tabellen Ansatte. Nรฅr du bruker krรธllete klammeparenteser, er matrisen pakket inn i enkle anfรธrselstegn ('), mens tekstmatriseelementene er pakket inn i doble anfรธrselstegn (").
Spรธrre matrisedata
For รฅ spรธrre elementene i en matrise bruker vi SELECT-setningen.
For รฅ se innholdet i tabellen vรฅr for ansatte, kjรธrer vi fรธlgende kommando:
SELECT * FROM Employees;
Dette returnerer fรธlgende:
Elementene i array-kolonnen, det vil si kontakt, har blitt omsluttet av krรธllete klammeparenteser {}.
For รฅ fรฅ tilgang til selve array-elementene legger vi til et abonnent i hakeparenteser []. Det fรธrste elementet i en matrise er pรฅ posisjon 1.
For eksempel mรฅ vi fรฅ navn pรฅ ansatte og kun deres fรธrste kontakt for de ansatte med mer enn รฉn kontakt. Vi kan fรฅ tilgang til dette som kontakt[1].
La oss se dette:
SELECT name, contact[1] FROM Employees;
Dette vil returnere fรธlgende:
Vi kan bruke SELECT-setningen sammen med WHERE-leddet for รฅ filtrere rader basert pรฅ array-kolonnen.
For รฅ se den ansatte med (408)-567-78234 som den andre kontakten, kan vi for eksempel kjรธre fรธlgende kommando:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Dette vil returnere fรธlgende:
modifisering PostgreSQL Array
Du kan oppdatere alle eller et enkelt element i en matrise.
Her er innholdet i tabellen Ansatte:
La oss oppdatere det andre telefonnummeret til den ansatte James Bush, hvis ID er 3:
Kjรธr fรธlgende kommando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Kommandoen skal kjรธre vellykket:
La oss spรธrre i tabellen for รฅ sjekke om endringen var vellykket:
Endringen var vellykket.
Sรธker i en PostgreSQL Array
For รธyeblikket er tabellen vรฅr for ansatte som fรธlger:
Anta at vi trenger รฅ vite hvem som eier kontakten (408)-783-5731 uavhengig av posisjonen i kontaktmatrisen, vi kan bruke ANY()-funksjonen som vist nedenfor:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Dette vil returnere fรธlgende:
Utvide matriser
Vi kan dele verdiene til en matrise i rader. Denne prosessen er kjent som array-utvidelse.
I eksemplet med Employees-tabellen er det noen ansatte med to kontakter i kontaktarrayen. Vi kan dele disse opp i separate rader.
PostgreSQL gir funksjonen unnest() som kan brukes til dette.
For eksempel:
SELECT name, unnest(contact) FROM Employees;
Dette vil returnere fรธlgende:
De ansatte Alice John og James Bush, har to kontakter. Vi kan dele opp i separate rader.
Bruker pgAdmin
Opprette PostgreSQL arrays
For รฅ oppnรฅ det samme gjennom pgAdmin, gjรธr dette:
Trinn 1) Logg pรฅ pgAdmin-kontoen din.
Trinn 2)
- Fra navigasjonslinjen til venstre - Klikk pรฅ rbaser.
- Klikk pรฅ Demo-knappen
Trinn 3) Skriv inn sรธket i spรธrringsredigeringsprogrammet for รฅ opprette tabellen Ansatte:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Trinn 4) Klikk pรฅ Utfรธr-knappen.
Sette PostgreSQL Matriseverdier
Trinn 1) Skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
INSERT INTO Employees
VALUES
(
1,
'Alice John',
ARRAY [ '(408)-743-9045',
'(408)-567-7834' ]
);
Trinn 2) Klikk pรฅ Utfรธr-knappen:
Trinn 3)
For รฅ bruke krรธllete klammeparenteser i spรธrringen
Trinn 1) Skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
INSERT INTO Employees
VALUES
(
2,
'Kate Joel',
'{"(408)-783-5731"}'
),
(
3,
'James Bush',
'{"(408)-745-8965","(408)-567-78234"}'
);
Trinn 2) Klikk pรฅ Utfรธr-knappen:
Spรธrre matrisedata
Trinn 1) For รฅ se innholdet i tabellen Ansatte, skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
SELECT * FROM Employees;
Trinn 2) Klikk pรฅ Utfรธr-knappen:
Den skal returnere fรธlgende:
Trinn 3) For รฅ se de fรธrste kontaktene til ansatte:
- Skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
SELECT name, contact[1] FROM Employees;
- Klikk pรฅ Utfรธr-knappen.
Den skal returnere fรธlgende:
Trinn 4) Slik kombinerer du SELECT-setningen med WHERE-leddet:
- Skriv inn fรธlgende kommando i spรธrringsredigeringsprogrammet:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Klikk pรฅ Utfรธr-knappen.
Den skal returnere fรธlgende:
modifisering PostgreSQL Array
Trinn 1) For รฅ oppdatere den andre kontakten til brukeren med ID 3, kjรธr fรธlgende kommando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Trinn 2) Klikk pรฅ Utfรธr-knappen.
Trinn 3)
1. Skriv inn fรธlgende kommando i spรธrringsredigeringsprogrammet for รฅ sjekke om endringen var vellykket:
SELECT * FROM Employees;
2. Klikk pรฅ Utfรธr-knappen.
Den skal returnere fรธlgende:
Sรธker i en PostgreSQL Array
Trinn 1) Skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Trinn 2) Klikk pรฅ Utfรธr-knappen.
Den skal returnere fรธlgende:
Utvide matriser
Trinn 1) Skriv inn fรธlgende spรธrring i spรธrringsredigeringsprogrammet:
SELECT name, unnest(contact) FROM Employees;
Trinn 2) Klikk pรฅ Utfรธr-knappen.
Den skal returnere fรธlgende:
Sammendrag
- PostgreSQL lar oss definere en tabellkolonne som en matrisetype.
- Matrisen mรฅ vรฆre gyldig data-type slik som heltall, tegn eller brukerdefinerte typer.
- For รฅ sette inn verdier i en matrisekolonne, bruker vi ARRAY-konstruktรธren.
- Hvis det er mer enn ett element i samme rad i en matrisekolonne, er det fรธrste elementet i posisjon 1.
- Hver verdi kan nรฅs ved รฅ sende et abonnent i hakeparenteser [].
- Elementene i arrayet kan hentes ved hjelp av SELECT-setningen.
- Verdiene til matrisekolonnen kan omsluttes av hakeparenteser [] eller krรธllete klammeparenteser {}.
- Vi kan sรธke etter matrisekolonneverdier ved รฅ bruke ANY()-funksjonen.






























