PostgreSQL Array: Funktioner, Typ, Exempel
Vad är PostgreSQL Array?
In PostgreSQL, kan vi definiera en kolumn som en array av giltiga datatyper. Datatypen kan vara inbyggd, användardefinierad eller uppräknad. Förutom detta spelar arrayer en viktig roll i PostgreSQL.
Varje motsvarande PostgreSQL datatyp kommer med en relevant matristyp. Till exempel har heltalsdatatypen arraytypen heltal[], teckendatatypen har arraytypen character[] osv.
Skapa PostgreSQL arrayer
I följande exempel kommer vi att skapa 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 bör köras framgångsrikt.
Sätta PostgreSQL Matrisvärden
Låt oss nu infoga värden i tabellen ovan:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Insättningen bör fungera framgångsrikt.
Värdena för den tredje kolumnen, det vill säga kontakt, har infogats som en matris. Detta har uppnåtts med hjälp av ARRAY-konstruktorn.
I det här exemplet har vi placerat dem inom hakparenteser []. Vi har två kontakter för medarbetaren Alice John.
Det är fortfarande möjligt för oss att använda lockiga hängslen {} som visas nedan:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Kommandot bör köras framgångsrikt.
Ovanstående uttalanden kommer att infoga två rader i tabellen Anställda. När du använder hängslen lindas arrayen inom enkla citattecken (') medan textarrayobjekten lindas inom dubbla citattecken (“).
Frågar matrisdata
För att fråga om elementen i en array använder vi SELECT-satsen.
För att se innehållet i vår tabell med anställda kör vi följande kommando:
SELECT * FROM Employees;
Detta returnerar följande:
Elementen i arraykolumnen, det vill säga kontakt, har omslutits av hängslen {}.
För att komma åt själva arrayelementen lägger vi till en nedsänkning inom hakparenteser []. Det första elementet i en array är på position 1.
Vi behöver till exempel få namn 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 kommer att returnera följande:
Vi kan använda SELECT-satsen tillsammans med WHERE-satsen för att filtrera rader baserat på arraykolumnen.
Till exempel, för att se medarbetaren med (408)-567-78234 som den andra kontakten, kan vi köra följande kommando:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Detta kommer att returnera följande:
Ändra PostgreSQL array
Du kan uppdatera hela eller ett enstaka element i en array.
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 Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Kommandot bör 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 vår personaltabell följande:
Anta att vi behöver veta vem som äger kontakten (408)-783-5731 oavsett position inom kontaktmatrisen, vi kan använda funktionen ANY() enligt nedan:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Detta kommer att returnera följande:
Expanderande matriser
Vi kan dela upp värdena för en array i rader. Denna process är känd som arrayexpansion.
I exemplet med tabellen Anställda finns det några anställda med två kontakter i kontaktgruppen. Vi kan dela upp dessa i separata rader.
PostgreSQL tillhandahåller unnest()-funktionen som kan användas för detta.
Till exempel:
SELECT name, unnest(contact) FROM Employees;
Detta kommer att returnera följande:
De anställda Alice John och James Bush, har två kontakter. Vi kan dela upp i separata rader.
Använder pgAdmin
Skapa PostgreSQL arrayer
För att åstadkomma samma sak genom pgAdmin, gör så här:
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster- Klicka på rbases.
- Klicka på Demo-knappen
Steg 3) Skriv in frågan i frågeredigeraren 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.
Sätta PostgreSQL Matrisvärden
Steg 1) Skriv in följande fråga i frågeredigeraren:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Steg 2) Klicka på knappen Kör:
Steg 3)
För att använda lockiga hängslen i frågan
Steg 1) Skriv in följande fråga i frågeredigeraren:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Steg 2) Klicka på knappen Kör:
Frågar matrisdata
Steg 1) För att se innehållet i tabellen Anställda skriver du följande fråga i frågeredigeraren:
SELECT * FROM Employees;
Steg 2) Klicka på knappen Kör:
Det bör returnera följande:
Steg 3) För att se de första kontakterna med anställda:
- Skriv in följande fråga i frågeredigeraren:
SELECT name, contact[1] FROM Employees;
- Klicka på knappen Kör.
Det bör returnera följande:
Steg 4) Så här kombinerar du SELECT-satsen med WHERE-satsen:
- Skriv följande kommando i frågeredigeraren:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Klicka på knappen Kör.
Det bör returnera följande:
Ändra PostgreSQL array
Steg 1) För att uppdatera användarens andra kontakt med ID 3, kör följande kommando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 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 Execute.
Det bör returnera följande:
Söker i en PostgreSQL array
Steg 1) Skriv in följande fråga i frågeredigeraren:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Steg 2) Klicka på knappen Kör.
Det bör returnera följande:
Expanderande matriser
Steg 1) Skriv in följande fråga i frågeredigeraren:
SELECT name, unnest(contact) FROM Employees;
Steg 2) Klicka på knappen Kör.
Det bör returnera följande:
Sammanfattning
- PostgreSQL tillåter oss att definiera en tabellkolumn som en matristyp.
- Arrayen måste vara giltig data typ såsom heltal, tecken eller användardefinierade typer.
- För att infoga värden i en matriskolumn använder vi ARRAY-konstruktorn.
- Om det finns mer än ett element i samma rad i en matriskolumn, är det första elementet på position 1.
- Varje värde kan nås genom att skicka en nedsänkt skrift inom hakparenteser [].
- Elementen i arrayen kan hämtas med hjälp av SELECT-satsen.
- Värdena för arraykolumnen kan omges av hakparenteser [] eller klammerparenteser {}.
- Vi kan söka efter matriskolumnvärden med funktionen ANY() .
Ladda ner den databas som används i denna handledning