PostgreSQL Array: Funktioner, Typ, Exempel
โก Smart sammanfattning
PostgreSQL Med Array kan du definiera en tabellkolumn som en array av valfri giltig datatyp. Den tรคcker hur man skapar arraykolumner, infogar vรคrden med ARRAY-konstruktorn eller klammerparenteser, frรฅgar och modifierar element och sรถker med ANY().

Vad รคr PostgreSQL Array?
In PostgreSQL, kan vi definiera en kolumn som en array av giltiga datatyper. Datatypen kan vara inbyggd, anvรคndardefinierad eller en upprรคknad typ. Utรถver detta spelar arrayer en viktig roll i PostgreSQL.
Varje motsvarande PostgreSQL Datatypen levereras med en relevant arraytyp. Till exempel har datatypen heltal arraytypen heltal[], datatypen tecken har arraytypen tecken[] och sรฅ vidare.
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 i den tredje kolumnen, det vill sรคga kontakt, har infogas som en array. Detta har uppnรฅtts med hjรคlp av ARRAY-konstruktorn. I det hรคr exemplet har vi omgivit dem med 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 elementen i en array anvรคnder vi SELECT-satsen. Fรถr att se innehรฅllet i vรฅr Employees-tabell kรถr vi fรถljande kommando:
SELECT * FROM Employees;
Detta returnerar fรถljande:
Elementen i arraykolumnen, det vill sรคga kontakt, har omslutits av klammerparenteser {}. Fรถr att komma รฅt sjรคlva arrayelementen lรคgger vi till en nedsรคnkt linje inom hakparenteser []. Det fรถrsta elementet i en array รคr pรฅ position 1.
Till exempel behรถver vi fรฅ namnen pรฅ anstรคllda och endast deras fรถrsta kontaktperson fรถr de anstรคllda som har mer รคn en kontaktperson. Vi kan komma รฅt detta som kontakt[1]. Lรฅt oss se pรฅ detta:
SELECT name, contact[1] FROM Employees;
Detta kommer att returnera fรถljande:
Vi kan anvรคnda SELECT-satsen tillsammans med WHERE-klausulen fรถr att filtrera rader baserat pรฅ arraykolumnen. Fรถr att till exempel se den anstรคllde 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 enskilt element i en array. Hรคr รคr innehรฅllet i tabellen Employees:
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 i 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 i en array i rader. Denna process kallas arrayexpansion. I exemplet med tabellen Employees finns det nรฅgra anstรคllda med tvรฅ kontakter i kontaktarrayen. Vi kan dela upp dessa i separata rader. PostgreSQL tillhandahรฅller funktionen unnest() 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 dessa 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)
- Klicka pรฅ Databaser i navigeringsfรคltet till vรคnster.
- 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 klammerparenteser i frรฅgan skriver du 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"}' );
Klicka sedan pรฅ knappen Utfรถ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 till anstรคllda, skriv fรถljande frรฅga i frรฅgeredigeraren och klicka pรฅ knappen Kรถr:
SELECT name, contact[1] FROM Employees;
Det bรถr returnera fรถljande:
Steg 4) Fรถr att kombinera SELECT-satsen med WHERE-satsen skriver du fรถljande kommando i frรฅgeredigeraren och klickar pรฅ knappen Kรถr:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
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) Skriv fรถljande kommando i frรฅgeredigeraren fรถr att kontrollera om รคndringen lyckades och klicka sedan pรฅ knappen Utfรถr:
SELECT * FROM Employees;
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:
Ladda ner den databas som anvรคnds i denna handledning






























