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.






























