PostgreSQL Array: Funktioner, typ, exempel

Innehållsförteckning:

Anonim

Vad är PostgreSQL Array?

I PostgreSQL kan vi definiera en kolumn som en uppsättning giltiga datatyper. Datatypen kan vara inbyggd, användardefinierad eller uppräknad. Annat än detta spelar arrays en viktig roll i PostgreSQL.

Varje motsvarande PostgreSQL-datatyp kommer med en relevant arraytyp. Exempelvis har heltaldatatypen heltal [] arraytyp, teckendatatypen har tecken [] arraytyp, etc.

I denna PostgreSQL-handledning lär du dig:

  • Vad är PostgreSQL Array?
  • Skapa PostgreSQL-matriser
  • Infoga PostgreSQL-matrisvärden
  • Fråga arraydata
  • Ändra PostgreSQL Array
  • Söker i en PostgreSQL-array
  • Expanderande matriser
  • Använda pgAdmin

Skapa PostgreSQL-matriser

I följande exempel skapar vi en tabell med namnet Anställda med kontaktkolumnen definierad som en textmatris:

CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);

Kommandot ska köras framgångsrikt.

Infoga PostgreSQL-matrisvärden

Låt oss nu infoga värden i tabellen ovan:

INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);

Insättningen ska köras framgångsrikt.

Värdena för den tredje kolumnen, det vill säga kontakten, har infogats som en matris. Detta har uppnåtts med hjälp av ARRAY-konstruktören.

I det här exemplet har vi stängt dem inom hakparenteser []. Vi har två kontakter för den anställde Alice John.

Det är fortfarande möjligt för oss att använda lockiga hängslen {} som visas nedan:

INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');

Kommandot ska köras framgångsrikt.

Ovanstående uttalanden infogar två rader i tabellen Anställda. När du använder lockiga hakparenteser förpackas matrisen inuti enstaka citattecken (') medan textmatriserna läggs in i dubbla citattecken (").

Fråga arraydata

För att fråga om elementen i en matris använder vi SELECT-satsen.

För att se innehållet i tabellen Anställda kör vi följande kommando:

SELECT * FROM Employees;

Detta returnerar följande:

Elementen i array-kolumnen, det vill säga kontakt, har slutits inom lockiga hakparenteser {}.

För att komma åt arrayelementen själva lägger vi till ett prenumeration inom hakparenteser []. Det första elementet i en matris är vid position 1.

Vi behöver till exempel få namnen på anställda och endast deras första kontakt för de anställda med mer än en kontakt. Vi kan komma åt detta som kontakt [1].

Låt oss se detta:

SELECT name, contact[1]FROM Employees;

Detta returnerar följande:

Vi kan använda SELECT-satsen tillsammans med WHERE-satsen för att filtrera rader baserat på array-kolumnen.

För att till exempel se medarbetaren med (408) -567-78234 som den andra kontakten kan vi köra följande kommando:

SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';

Detta returnerar följande:

Ändra PostgreSQL Array

Du kan uppdatera alla eller ett enda element i en matris.

Här är innehållet i tabellen Anställda:

Låt oss uppdatera det andra telefonnumret till den anställde James Bush, vars id är 3:

Kör följande kommando:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Kommandot ska köras framgångsrikt:

Låt oss fråga tabellen för att kontrollera om ändringen lyckades:

Förändringen var framgångsrik.

Söker i en PostgreSQL-array

För närvarande är tabellen Anställda följande:

Antag att vi behöver veta vem som äger kontakten (408) -783-5731 oavsett positionen i kontaktmatrisen, vi kan använda ANY () -funktionen enligt nedan:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Detta returnerar följande:

Expanderande matriser

Vi kan dela värdena för en matris i rader. Denna process kallas array-expansion.

I exemplet i tabellen Anställda finns det några anställda med två kontakter i kontaktmatrisen. Vi kan dela dessa i separata rader.

PostgreSQL tillhandahåller den onödigaste () funktionen som kan användas för detta.

Till exempel:

SELECTname,unnest(contact)FROMEmployees;

Detta returnerar följande:

De anställda Alice John och James Bush har två kontakter. Vi kan dela upp i separata rader.

Använda pgAdmin

Skapa PostgreSQL-matriser

För att åstadkomma samma genom pgAdmin, gör detta:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Från navigeringsfältet till vänster - Klicka på rbaser.
  2. Klicka på knappen Demo

Steg 3) Skriv frågan i frågeditoren för att skapa tabellen Anställda:

CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);

Steg 4) Klicka på knappen Kör.

Infoga PostgreSQL-matrisvärden

Steg 1) Skriv följande fråga i frågeditorn:

INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);

Steg 2) Klicka på knappen Kör:

Steg 3)

Att använda lockiga hängslen i frågan

Steg 1) Skriv följande fråga i frågeditorn:

INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');

Steg 2) Klicka på knappen Kör:

Fråga arraydata

Steg 1) Om du vill se innehållet i tabellen Anställda skriver du följande fråga i frågeditorn:

SELECT * FROM Employees;

Steg 2) Klicka på knappen Kör:

Den ska returnera följande:

Steg 3) Så här ser du de anställdas första kontakter:

  1. Skriv följande fråga i frågeredigeraren:
    SELECT name, contact[1]FROM Employees;
  2. Klicka på knappen Kör.

Den ska returnera följande:

Steg 4) Så här kombinerar du SELECT-satsen med WHERE-satsen:

  1. Skriv följande kommando i frågeredigeraren:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Klicka på knappen Kör.

Den ska returnera följande:

Ändra PostgreSQL Array

Steg 1) Kör följande kommando för att uppdatera den andra kontakten för användare med id på 3:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Steg 2) Klicka på knappen Kör.

Steg 3)

1. Skriv följande kommando i frågeredigeraren för att kontrollera om ändringen lyckades:

SELECT * FROM Employees;

2.Klicka på knappen Kör.

Den ska returnera följande:

Söker i en PostgreSQL-array

Steg 1) Skriv följande fråga i frågeditorn:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Steg 2) Klicka på knappen Kör.

Den ska returnera följande:

Expanderande matriser

Steg 1) Skriv följande fråga i frågeditorn:

SELECTname,unnest(contact)FROMEmployees;

Steg 2) Klicka på knappen Kör.

Den ska returnera följande:

Sammanfattning:

  • Med PostgreSQL kan vi definiera en tabellkolumn som en arraytyp.
  • Matrisen måste ha en giltig datatyp, t.ex. heltal, tecken eller användardefinierade typer.
  • För att infoga värden i en arraykolumn använder vi ARRAY-konstruktorn.
  • Om det finns mer än ett element i samma rad i en array-kolumn, är det första elementet i position 1.
  • Varje värde kan nås genom att skicka ett prenumeration inom hakparenteser [].
  • Elementen i matrisen kan hämtas med SELECT-satsen.
  • Värdena i array-kolumnen kan stängas inom hakparenteser [] eller lockiga parenteser {}.
  • Vi kan söka efter array-kolumnvärden med ANY () -funktionen.

Ladda ner databasen som används i denna handledning