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

⚡ Nutikas kokkuvõte

PostgreSQL Massiiv võimaldab teil defineerida tabeli veeru mis tahes kehtiva andmetüübiga massiivina. See hõlmab massiivi veergude loomist, väärtuste sisestamist ARRAY konstruktori või looksulgudega, elementide päringute tegemist ja muutmist ning otsimist ANY() abil.

  • 📦 Määratlus: mistahes PostgreSQL andmetüübil on vastav massiivitüüp, näiteks integer[].
  • 🧱 Loo ja lisa: Kasutage TEXT[] veerge ja ARRAY konstruktorit või looksulge.
  • 🔎 Päring: Juurdepääsuelemendid alaindeksitega; esimene element on positsioonil 1.
  • ✏️ Muuda ja otsi: Uuenda üksikuid elemente ja otsi väärtusi ANY() abil.
  • Laienda: Funktsioon unnest() jagab massiivi väärtused eraldi ridadeks.

PostgreSQL Array

Mis on PostgreSQL Array?

In PostgreSQL, saame veeru defineerida kehtivate andmetüüpide massiivina. Andmetüüp võib olla sisseehitatud, kasutaja määratletud või loetletud tüüp. Lisaks sellele mängivad massiivid olulist rolli PostgreSQL.

Iga vastav PostgreSQL Andmetüübiga kaasneb vastav massiivitüüp. Näiteks täisarvu andmetüübi massiivitüüp on integer[], märgi andmetüübi massiivitüüp on character[] 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 ehk kontakti väärtused on lisatud massiivina. See on saavutatud ARRAY konstruktori abil. Selles näites oleme need pannud nurksulgudesse []. Meil ​​on töötaja Alice Johni jaoks 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äringuks kasutame SELECT-lauset. 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 paigutatud looksulgudesse {}. Massiivi elementide endi juurde pääsemiseks lisame nurksulgudesse alaindeksi []. 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. Me saame sellele ligi kontaktina[1]. Vaatame seda:

SELECT name, contact[1]
FROM Employees;

See tagastab järgmise:

Massiiviandmete päring

Massiivi veeru põhjal ridade filtreerimiseks saame kasutada SELECT-lauset koos WHERE-klausliga. Näiteks selleks, et näha töötajat, kelle kood on (408)-567-78234, teise kontaktina, 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 uuendada kogu massiivi elementi või ainult ühte elementi. 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 meil on vaja teada, kellele kuulub kontakt (408)-783-5731, olenemata selle positsioonist kontaktide massiivis. Saame kasutada funktsiooni ANY(), nagu allpool näidatud:

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

See tagastab järgmise:

Otsimine a PostgreSQL Array

Laienevad massiivid

Massiivi väärtused saame jagada ridadeks. Seda protsessi nimetatakse massiivi laiendamiseks. Töötajate tabeli näites on kontaktide massiivis mõned töötajad, kellel on kaks kontakti. Saame need jagada eraldi ridadeks. PostgreSQL pakub selleks kasutatavat funktsiooni unnest(). 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 need jagada eraldi ridadesse.

pgAdmini kasutamine

loomine PostgreSQL Massiraadid

Sama tegemiseks pgAdmini kaudu tehke järgmist:

Step 1) Logige sisse oma pgAdmini kontole.

Step 2)

  1. Klõpsake vasakpoolsel navigeerimisribal valikul Andmebaasid.
  2. Klõpsake nupul 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) Looksulgude kasutamiseks päringus 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"}'
   );

Seejärel klõpsake nuppu Käivita:

Sisestamine PostgreSQL Massiivi väärtused

Massiiviandmete päring

Step 1) Töötajate tabeli sisu kuvamiseks 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 nägemiseks tippige päringuredaktorisse järgmine päring ja klõpsake nuppu Käivita:

SELECT name, contact[1]
FROM Employees;

Massiiviandmete päring pgAdmini abil

See peaks tagastama järgmise:

Massiiviandmete päring pgAdmini abil

Step 4) SELECT-lause ja WHERE-klausli kombineerimiseks tippige päringuredaktorisse järgmine käsk ja klõpsake nuppu Käivita:

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

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) Tippige päringuredaktorisse järgmine käsk, et kontrollida, kas muudatus õnnestus, ja seejärel klõpsake nuppu Käivita:

SELECT * FROM Employees;

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

Laadige alla selles õpetuses kasutatud andmebaas

KKK

Jah. Tehisintellekti assistendid saavad kirjutada CREATE TABLE lauseid massiivi veergudega, INSERT käske ARRAY või looksulgude abil ning funktsioone nagu unnest() või ANY(). Testige genereeritud SQL-i oma skeemil enne selle käivitamist.

Jah. Tehisintellekti tööriistad oskavad anda nõu, kas teie andmetele sobib massiivi veerg või normaliseeritud alamtabel. Massiivid sobivad väikeste, fikseeritud loenditega, samas kui eraldi tabelid sobivad suurte või sageli päritavate seostega. Kinnitage oma päringumustritega.

Kasutage funktsiooni array_length(array, dimension). Näiteks array_length(contact, 1) tagastab kontaktmassiivi esimese dimensiooni elementide arvu.

Jah. Kasutage funktsiooni array_append(array, value) või liitmisoperaatorit ||. Näiteks UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') lisab uue elemendi.

Võta see postitus kokku järgmiselt: