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().

  • 📦 Definisjon: Noen PostgreSQL datatypen har en samsvarende arraytype, for eksempel integer[].
  • 🧱 Opprett og sett inn: Bruk TEXT[]-kolonner og ARRAY-konstruktøren eller krøllparenteser.
  • 🔎 Spørsmål: Tilgangselementer med indekser; det første elementet er på posisjon 1.
  • ✏️ Endre og søk: Oppdater enkeltelementer og søkeverdier med ANY().
  • ➗ Utvide: Funksjonen unnest() deler arrayverdier inn i separate rader.

PostgreSQL Array

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.

Opprette PostgreSQL arrays

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.

Sette PostgreSQL Matriseverdier

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.

Sette PostgreSQL Matriseverdier

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:

Spørre matrisedata

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:

Spørre matrisedata

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:

Spørre matrisedata

modifisering PostgreSQL Array

Du kan oppdatere hele eller ett enkelt element i en matrise. Her er innholdet i tabellen Ansatte:

modifisering PostgreSQL Array

La oss oppdatere det andre telefonnummeret til den ansatte James Bush, hvis ID er 3:

modifisering PostgreSQL Array

Kjør følgende kommando:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

Kommandoen skal kjøre vellykket:

modifisering PostgreSQL Array

La oss spørre i tabellen for å sjekke om endringen var vellykket:

modifisering PostgreSQL Array

Endringen var vellykket.

Søker i en PostgreSQL Array

For øyeblikket er tabellen vår for ansatte som følger:

Søker i en PostgreSQL Array

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:

Søker i en PostgreSQL Array

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:

Utvide matriser

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)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo-knappen.

Opprette PostgreSQL Arrays ved hjelp av pgAdmin

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.

Opprette PostgreSQL Arrays ved hjelp av pgAdmin

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:

Sette PostgreSQL Matriseverdier

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:

Sette PostgreSQL Matriseverdier

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:

Spørre matrisedata ved hjelp av pgAdmin

Den skal returnere følgende:

Spørre matrisedata ved hjelp av pgAdmin

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;

Spørre matrisedata ved hjelp av pgAdmin

Den skal returnere følgende:

Spørre matrisedata ved hjelp av pgAdmin

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';

Spørre matrisedata ved hjelp av pgAdmin

Den skal returnere følgende:

Spørre matrisedata ved hjelp av pgAdmin

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.

modifisering PostgreSQL Array ved hjelp av pgAdmin

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;

modifisering PostgreSQL Array ved hjelp av pgAdmin

Den skal returnere følgende:

modifisering PostgreSQL Array ved hjelp av pgAdmin

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.

Søker i en PostgreSQL Array ved hjelp av pgAdmin

Den skal returnere følgende:

Søker i en PostgreSQL Array ved hjelp av pgAdmin

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.

Utvide matriser ved hjelp av pgAdmin

Den skal returnere følgende:

Utvide matriser ved hjelp av pgAdmin

Last ned databasen som brukes i denne opplæringen

Spørsmål og svar

Ja. AI-assistenter kan skrive CREATE TABLE-setninger med arraykolonner, INSERT-kommandoer ved hjelp av ARRAY eller krøllparenteser, og funksjoner som unnest() eller ANY(). Test den genererte SQL-en på skjemaet ditt før du kjører den.

Ja. AI-verktøy kan gi råd om hvorvidt en arraykolonne eller en normalisert underordnet tabell passer til dataene dine. Arrayer passer til små, faste lister, mens separate tabeller passer til store eller ofte spørrede relasjoner. Valider med spørremønstrene dine.

Bruk funksjonen array_length(array, dimension). For eksempel returnerer array_length(contact, 1) antall elementer i den første dimensjonen av kontaktarrayet.

Ja. Bruk funksjonen array_append(array, value) eller sammenkoblingsoperatoren ||. For eksempel legger UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') til et nytt element.

Oppsummer dette innlegget med: