PostgreSQL Matrise: Funksjoner, Type, Eksempel
⚡ Smart oppsummering
PostgreSQL Med Array kan du definere en tabellkolonne som en array av en hvilken som helst gyldig datatype. Den dekker oppretting av arraykolonner, innsetting av verdier med ARRAY-konstruktøren eller krøllparenteser, spørring og endring av elementer, og søking med ANY().

Hva er PostgreSQL Array?
In PostgreSQL, kan vi definere en kolonne som en matrise med gyldige datatyper. Datatypen kan være innebygd, brukerdefinert eller en opplistet type. Bortsett fra dette spiller matriser en viktig rolle i PostgreSQL.
Hver tilsvarende PostgreSQL Datatypen kommer med en relevant arraytype. For eksempel har integer-datatypen integer[] arraytypen, character-datatypen har character[] arraytypen, og så videre.
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 i 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 i hakeparenteser []. 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 Employees-tabellen kjører vi følgende kommando:
SELECT * FROM Employees;
Dette returnerer følgende:
Elementene i matrisekolonnen, det vil si kontakt, er omsluttet av krøllparenteser {}. For å få tilgang til selve matriseelementene legger vi til et indekstegn i hakeparenteser []. Det første elementet i en matrise er i posisjon 1.
For eksempel trenger vi navnene på ansatte og kun deres første kontaktperson for de ansatte med mer enn én kontaktperson. Vi kan få tilgang til dette som kontakt[1]. La oss se på dette:
SELECT name, contact[1] FROM Employees;
Dette vil returnere følgende:
Vi kan bruke SELECT-setningen sammen med WHERE-klausulen for å filtrere rader basert på arraykolonnen. For eksempel, for å se den ansatte med (408)-567-78234 som den andre kontakten, kan vi 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 hele eller ett 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 i en matrise inn i rader. Denne prosessen kalles matriseutvidelse. I eksemplet med Ansatte-tabellen er det noen ansatte med to kontakter i kontaktmatrisen. Vi kan dele disse inn i separate rader. PostgreSQL gir unnest()-funksjonen 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 disse inn 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 klikker du på Databaser.
- 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øllparenteser i spørringen, skriv inn følgende spørring i spørreredigeringsprogrammet:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Klikk deretter på Utfør-knappen:
Spørre matrisedata
Trinn 1) For å se innholdet i tabellen Ansatte, skriv inn følgende spørring i spørreredigeringsprogrammet:
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ørreredigeringsprogrammet og klikk på Utfør-knappen:
SELECT name, contact[1] FROM Employees;
Den skal returnere følgende:
Trinn 4) For å kombinere SELECT-setningen med WHERE-klausulen, skriv inn følgende kommando i spørreredigeringsprogrammet og klikk på Utfør-knappen:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Den skal returnere følgende:
modifisering PostgreSQL Array
Trinn 1) For å oppdatere den andre kontakten til brukeren med en ID på 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) Skriv inn følgende kommando i spørreredigeringsprogrammet for å sjekke om endringen var vellykket, og klikk deretter på Utfør-knappen:
SELECT * FROM Employees;
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:
Last ned databasen som brukes i denne opplæringen






























