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






























