PostgreSQL Massiiv: funktsioonid, tüüp, näide

Mis on PostgreSQL Array?

In PostgreSQL, saame veeru määratleda kehtivate andmetüüpide massiivina. Andmetüüp võib olla sisseehitatud, kasutaja määratud või loendatav tüüp. Peale selle mängivad massiivid selles olulist rolli PostgreSQL.

Iga vastav PostgreSQL andmetüübiga kaasneb asjakohane massiivitüüp. Näiteks täisarvu andmetüübil on massiivitüüp integer[], märgi andmetüübil on massiivitüüp karakter[] jne.

loomine PostgreSQL Massiraadid

Järgmises näites loome tabeli nimega Töötajad, mille kontakti veerg on määratletud tekstimassiivina:

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

Käsk peaks edukalt töötama.

loomine PostgreSQL Massiraadid

Sisestamine PostgreSQL Massiivi väärtused

Lase nüüd sisestada väärtused ülaltoodud tabelisse:

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

Sisestamine peaks edukalt käima.

Sisestamine PostgreSQL Massiivi väärtused

Kolmanda veeru, st kontakti väärtused on sisestatud massiivina. See on saavutatud ARRAY konstruktori kasutamisega.

Selles näites oleme need pannud nurksulgudesse []. Meil on töötaja Alice Johniga kaks kontakti.

Meil on endiselt võimalik kasutada lokkis trakse {}, nagu allpool näidatud:

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

Käsk peaks edukalt töötama.

Sisestamine PostgreSQL Massiivi väärtused

Ülaltoodud avaldused lisavad tabelisse Töötajad kaks rida. Kui kasutate lokkis sulgusid, mähitakse massiiv jutumärkidesse ('), tekstimassiivi elemendid aga topeltjutumärkidesse (").

Massiiviandmete päring

Massiivi elementide päringu tegemiseks kasutame käsku SELECT.

Töötajate tabeli sisu nägemiseks käivitame järgmise käsu:

SELECT * FROM Employees;

See tagastab järgmise:

Massiiviandmete päring

Massiivi veeru elemendid, st kontakt, on suletud sulgudesse {}.

Massiivielementidele juurdepääsuks lisame nurksulgudesse [] alamindeksi. Massiivi esimene element asub positsioonil 1.

Näiteks peame hankima töötajate nimed ja ainult nende esimese kontakti nende töötajate puhul, kellel on rohkem kui üks kontakt. Pääseme sellele juurde kontaktina[1].

Vaatame seda:

SELECT name, contact[1]
FROM Employees;

See tagastab järgmise:

Massiiviandmete päring

Ridade filtreerimiseks massiivi veeru alusel saame kasutada lauset SELECT koos klausliga WHERE.

Näiteks selleks, et näha teise kontaktina töötajat (408)-567-78234, saame käivitada järgmise käsu:

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

See tagastab järgmise:

Massiiviandmete päring

Muutmine PostgreSQL Array

Saate värskendada massiivi kõiki või üksikuid elemente.

Siin on töötajate tabeli sisu:

Muutmine PostgreSQL Array

Uuendame töötaja James Bushi teist telefoninumbrit, kelle id on 3:

Muutmine PostgreSQL Array

Käivitage järgmine käsk:

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

Käsk peaks edukalt töötama:

Muutmine PostgreSQL Array

Tehkem tabelist päring, et kontrollida, kas muudatus õnnestus:

Muutmine PostgreSQL Array

Muutus õnnestus.

Otsimine a PostgreSQL Array

Praegu on meie töötajate tabel järgmine:

Otsimine a PostgreSQL Array

Oletame, et peame teadma, kellele kontakt (408)-783-5731 kuulub, olenemata asukohast kontakti massiivis, saame kasutada funktsiooni ANY(), nagu on näidatud allpool:

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

See tagastab järgmise:

Otsimine a PostgreSQL Array

Laienevad massiivid

Saame jagada massiivi väärtused ridadeks. Seda protsessi nimetatakse massiivi laiendamiseks.

Tabeli Töötajad näites on mõned töötajad, kellel on kontakti massiivi kaks kontakti. Saame need jagada eraldi ridadeks.

PostgreSQL pakub funktsiooni unnest(), mida saab selleks kasutada.

Näiteks:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

See tagastab järgmise:

Laienevad massiivid

Töötajatel Alice Johnil ja James Bushil on kaks kontakti. Saame jagada eraldi ridadeks.

pgAdmini kasutamine

loomine PostgreSQL Massiraadid

Sama tegemiseks pgAdmini kaudu tehke järgmist:

Step 1) Logige sisse oma pgAdmini kontole.

Step 2)

  1. Vasakpoolsel navigeerimisribal – klõpsake nuppu rbases.
  2. Klõpsake nuppu Demo

loomine PostgreSQL Massiivid pgAdmini abil

Step 3) Tabeli Töötajad loomiseks tippige päringuredaktorisse päring:

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

Step 4) Klõpsake nuppu Käivita.

loomine PostgreSQL Massiivid pgAdmini abil

Sisestamine PostgreSQL Massiivi väärtused

Step 1) Tippige päringuredaktorisse järgmine päring:

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

Step 2) Klõpsake nuppu Käivita:

Sisestamine PostgreSQL Massiivi väärtused

Step 3)

Päringus lokkis trakside kasutamine

Step 1) Tippige päringuredaktorisse järgmine päring:

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

Samm 2) Klõpsake nuppu Käivita:

Sisestamine PostgreSQL Massiivi väärtused

Massiiviandmete päring

Step 1) Tabeli Töötajad sisu vaatamiseks tippige päringuredaktorisse järgmine päring:

SELECT * FROM Employees;

Step 2) Klõpsake nuppu Käivita:

Massiiviandmete päring pgAdmini abil

See peaks tagastama järgmise:

Massiiviandmete päring pgAdmini abil

Step 3) Töötajate esimeste kontaktide vaatamiseks:

  1. Tippige päringuredaktorisse järgmine päring:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Klõpsake nuppu Käivita.

Massiiviandmete päring pgAdmini abil

See peaks tagastama järgmise:

Massiiviandmete päring pgAdmini abil

Step 4) SELECT-lause kombineerimiseks WHERE-klausliga:

  1. Tippige päringuredaktorisse järgmine käsk:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Klõpsake nuppu Käivita.

Massiiviandmete päring pgAdmini abil

See peaks tagastama järgmise:

Massiiviandmete päring pgAdmini abil

Muutmine PostgreSQL Array

Step 1) Kasutaja teise kontakti värskendamiseks ID-ga 3 käivitage järgmine käsk:

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

Step 2) Klõpsake nuppu Käivita.

Muutmine PostgreSQL Massiiv pgAdmini abil

Step 3)

1. Tippige päringuredaktorisse järgmine käsk, et kontrollida, kas muudatus õnnestus:

SELECT * FROM Employees;

2. Klõpsake nuppu Käivita.

Muutmine PostgreSQL Massiiv pgAdmini abil

See peaks tagastama järgmise:

Muutmine PostgreSQL Massiiv pgAdmini abil

Otsimine a PostgreSQL Array

Step 1) Tippige päringuredaktorisse järgmine päring:

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

Step 2) Klõpsake nuppu Käivita.

Otsimine a PostgreSQL Massiiv pgAdmini abil

See peaks tagastama järgmise:

Otsimine a PostgreSQL Massiiv pgAdmini abil

Laienevad massiivid

Step 1) Tippige päringuredaktorisse järgmine päring:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Step 2) Klõpsake nuppu Käivita.

Massiivide laiendamine pgAdmini abil

See peaks tagastama järgmise:

Massiivide laiendamine pgAdmini abil

kokkuvõte

  • PostgreSQL võimaldab meil määratleda tabeli veeru massiivitüübina.
  • Massiiv peab olema kehtiv andmetüüp nagu täisarv, märk või kasutaja määratud tüübid.
  • Väärtuste sisestamiseks massiivi veergu kasutame konstruktorit ARRAY.
  • Kui massiivi veeru samal real on rohkem kui üks element, on esimene element positsioonil 1.
  • Igale väärtusele pääseb juurde, kui sisestate nurksulgudes oleva alaindeksi [].
  • Massiivi elemendid saab kätte SELECT-lause abil.
  • Massiivi veeru väärtused saab paigutada nurksulgudesse [] või lokkis sulgudesse {}.
  • Saame otsida massiivi veergude väärtusi funktsiooni ANY() abil.

Laadige alla selles õpetuses kasutatud andmebaas