PostgreSQL Array: Functies, Type, Voorbeeld

โšก Slimme samenvatting

PostgreSQL Met Array kunt u een tabelkolom definiรซren als een array van elk geldig gegevenstype. Het behandelt het maken van arraykolommen, het invoegen van waarden met de ARRAY-constructor of accolades, het opvragen en wijzigen van elementen en het zoeken met ANY().

  • ???? Definitie: Elke PostgreSQL Het gegevenstype heeft een overeenkomend arraytype, zoals integer[].
  • ๐Ÿงฑ Aanmaken en invoegen: Gebruik TEXT[] kolommen en de ARRAY-constructor of accolades.
  • ๐Ÿ”Ž Query: Elementen met subscripten benaderen; het eerste element bevindt zich op positie 1.
  • โ€‹ Wijzigen en zoeken: Werk afzonderlijke elementen en zoekwaarden bij met ANY().
  • โž— Uitklappen: De functie unnest() splitst arraywaarden op in afzonderlijke rijen.

PostgreSQL reeks

Wat is PostgreSQL Array?

In PostgreSQLWe kunnen een kolom definiรซren als een array van geldige gegevenstypen. Het gegevenstype kan ingebouwd, door de gebruiker gedefinieerd of een opgesomd type zijn. Daarnaast spelen arrays een belangrijke rol in... PostgreSQL.

Elke corresponderende PostgreSQL Een gegevenstype heeft een bijbehorend arraytype. Zo heeft het gegevenstype integer het arraytype integer[], het gegevenstype character het arraytype character[], enzovoort.

Wij creรซren PostgreSQL arrays

In het volgende voorbeeld maken we een tabel met de naam Medewerkers, waarbij de kolom Contactpersonen is gedefinieerd als een tekstarray:

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

De opdracht zou met succes moeten worden uitgevoerd.

Wij creรซren PostgreSQL arrays

invoegen PostgreSQL Arraywaarden

Laat het ons weten invoegen waarden in de bovenstaande tabel:

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

Het invoegen zou succesvol moeten verlopen.

invoegen PostgreSQL Arraywaarden

De waarden van de derde kolom, oftewel contact, zijn als een array ingevoerd. Dit is gedaan met behulp van de ARRAY-constructor. In dit voorbeeld hebben we ze tussen vierkante haken [] geplaatst. We hebben twee contactpersonen voor de medewerker Alice John.

Het is nog steeds mogelijk dat we accolades {} gebruiken, zoals hieronder weergegeven:

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

De opdracht zou met succes moeten worden uitgevoerd.

invoegen PostgreSQL Arraywaarden

De bovenstaande statements voegen twee rijen toe aan de Employees-tabel. Wanneer u accolades gebruikt, wordt de array omsloten door enkele aanhalingstekens ('), terwijl de tekst-array-items omsloten worden door dubbele aanhalingstekens (โ€œ).

Arraygegevens opvragen

Om de elementen van een array op te vragen, gebruiken we de SELECT-instructie. Om de inhoud van onze tabel 'Employees' te bekijken, voeren we de volgende opdracht uit:

SELECT * FROM Employees;

Dit geeft het volgende terug:

Arraygegevens opvragen

De elementen van de arraykolom, oftewel 'contact', zijn tussen accolades {} geplaatst. Om de array-elementen zelf te benaderen, voegen we een index toe tussen vierkante haken []. Het eerste element in een array bevindt zich op positie 1.

We moeten bijvoorbeeld de namen van de medewerkers ophalen, en alleen hun eerste contactpersoon voor medewerkers met meer dan รฉรฉn contactpersoon. We kunnen dit benaderen als contact[1]. Laten we dit eens bekijken:

SELECT name, contact[1]
FROM Employees;

Dit retourneert het volgende:

Arraygegevens opvragen

We kunnen de SELECT-instructie samen met de WHERE-clausule gebruiken om rijen te filteren op basis van de kolom in de array. Om bijvoorbeeld de medewerker met (408)-567-78234 als tweede contactpersoon te zien, kunnen we de volgende opdracht uitvoeren:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Dit retourneert het volgende:

Arraygegevens opvragen

Het wijzigen PostgreSQL reeks

Je kunt alle elementen van een array of een enkel element ervan bijwerken. Hieronder zie je de inhoud van de tabel 'Employees':

Het wijzigen PostgreSQL reeks

Laten we het tweede telefoonnummer van de werknemer James Bush, wiens id 3 is, bijwerken:

Het wijzigen PostgreSQL reeks

Voer het volgende commando uit:

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

De opdracht zou met succes moeten worden uitgevoerd:

Het wijzigen PostgreSQL reeks

Laten we de tabel doorzoeken om te controleren of de wijziging succesvol was:

Het wijzigen PostgreSQL reeks

De verandering was succesvol.

Zoeken in een PostgreSQL reeks

Momenteel ziet onze tabel Medewerkers er als volgt uit:

Zoeken in een PostgreSQL reeks

Stel dat we willen weten wie de eigenaar is van het contact (408)-783-5731, ongeacht de positie binnen de contactenlijst. We kunnen hiervoor de ANY()-functie gebruiken, zoals hieronder weergegeven:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Dit retourneert het volgende:

Zoeken in een PostgreSQL reeks

Arrays uitbreiden

We kunnen de waarden van een array opsplitsen in rijen. Dit proces staat bekend als array-expansie. In het voorbeeld van de tabel 'Medewerkers' zijn er medewerkers met twee contactpersonen in de contact-array. We kunnen deze opsplitsen in afzonderlijke rijen. PostgreSQL biedt de functie unnest() die hiervoor gebruikt kan worden. Bijvoorbeeld:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Dit retourneert het volgende:

Arrays uitbreiden

De medewerkers Alice John en James Bush hebben twee contactpersonen. We kunnen deze in aparte rijen onderbrengen.

Gebruik pgAdmin

Wij creรซren PostgreSQL arrays

Om hetzelfde te bereiken via pgAdmin, doet u het volgende:

Stap 1) Log in op uw pgAdmin-account.

Stap 2)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. Klik op de knop 'Demo'.

Wij creรซren PostgreSQL Arrays met pgAdmin

Stap 3) Typ de query in de query-editor om de tabel Werknemers te maken:

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

Stap 4) Klik op de knop Uitvoeren.

Wij creรซren PostgreSQL Arrays met pgAdmin

invoegen PostgreSQL Arraywaarden

Stap 1) Typ de volgende query in de query-editor:

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

Stap 2) Klik op de knop Uitvoeren:

invoegen PostgreSQL Arraywaarden

Stap 3) Om accolades in de query te gebruiken, typt u de volgende query in de query-editor:

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

Klik vervolgens op de knop Uitvoeren:

invoegen PostgreSQL Arraywaarden

Arraygegevens opvragen

Stap 1) Om de inhoud van de tabel 'Employees' te bekijken, typt u de volgende query in de query-editor:

SELECT * FROM Employees;

Stap 2) Klik op de knop Uitvoeren:

Arraygegevens opvragen met pgAdmin

Het volgende zou moeten worden geretourneerd:

Arraygegevens opvragen met pgAdmin

Stap 3) Om de eerste contactpersonen van medewerkers te bekijken, typt u de volgende zoekopdracht in de zoekopdrachteditor en klikt u op de knop Uitvoeren:

SELECT name, contact[1]
FROM Employees;

Arraygegevens opvragen met pgAdmin

Het volgende zou moeten worden geretourneerd:

Arraygegevens opvragen met pgAdmin

Stap 4) Om de SELECT-instructie te combineren met de WHERE-clausule, typt u de volgende opdracht in de query-editor en klikt u op de knop Uitvoeren:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Arraygegevens opvragen met pgAdmin

Het volgende zou moeten worden geretourneerd:

Arraygegevens opvragen met pgAdmin

Het wijzigen PostgreSQL reeks

Stap 1) Om het tweede contact van de gebruiker met ID 3 bij te werken, voert u de volgende opdracht uit:

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

Stap 2) Klik op de knop Uitvoeren.

Het wijzigen PostgreSQL Array met behulp van pgAdmin

Stap 3) Typ de volgende opdracht in de query-editor om te controleren of de wijziging is gelukt en klik vervolgens op de knop Uitvoeren:

SELECT * FROM Employees;

Het wijzigen PostgreSQL Array met behulp van pgAdmin

Het volgende zou moeten worden geretourneerd:

Het wijzigen PostgreSQL Array met behulp van pgAdmin

Zoeken in een PostgreSQL reeks

Stap 1) Typ de volgende query in de query-editor:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Stap 2) Klik op de knop Uitvoeren.

Zoeken in een PostgreSQL Array met behulp van pgAdmin

Het volgende zou moeten worden geretourneerd:

Zoeken in een PostgreSQL Array met behulp van pgAdmin

Arrays uitbreiden

Stap 1) Typ de volgende query in de query-editor:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Stap 2) Klik op de knop Uitvoeren.

Arrays uitbreiden met pgAdmin

Het volgende zou moeten worden geretourneerd:

Arrays uitbreiden met pgAdmin

Download de database die in deze zelfstudie wordt gebruikt

Veelgestelde vragen

Ja. AI-assistenten kunnen CREATE TABLE-instructies schrijven met arraykolommen, INSERT-opdrachten met ARRAY of accolades, en functies zoals unnest() of ANY(). Test de gegenereerde SQL op uw schema voordat u deze uitvoert.

Ja. AI-tools kunnen adviseren of een matrixkolom of een genormaliseerde subtabel het beste bij uw gegevens past. Matrixkolommen zijn geschikt voor kleine, vaste lijsten, terwijl aparte tabellen beter passen bij grote of veelvuldig opgevraagde relaties. Valideer dit aan de hand van uw querypatronen.

Gebruik de functie array_length(array, dimension). Bijvoorbeeld, array_length(contact, 1) geeft het aantal elementen in de eerste dimensie van de contact-array terug.

Ja. Gebruik de functie array_append(array, waarde) of de concatenatieoperator ||. Bijvoorbeeld: UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') voegt een nieuw element toe.

Vat dit bericht samen met: