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.
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.
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.
Ü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:
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:
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:
Muutmine PostgreSQL Array
Saate värskendada massiivi kõiki või üksikuid elemente.
Siin on töötajate tabeli sisu:
Uuendame töötaja James Bushi teist telefoninumbrit, kelle id on 3:
Käivitage järgmine käsk:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Käsk peaks edukalt töötama:
Tehkem tabelist päring, et kontrollida, kas muudatus õnnestus:
Muutus õnnestus.
Otsimine a PostgreSQL Array
Praegu on meie töötajate tabel järgmine:
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:
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:
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)
- Vasakpoolsel navigeerimisribal – klõpsake nuppu rbases.
- Klõpsake nuppu Demo
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.
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:
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:
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:
See peaks tagastama järgmise:
Step 3) Töötajate esimeste kontaktide vaatamiseks:
- Tippige päringuredaktorisse järgmine päring:
SELECT name, contact[1] FROM Employees;
- Klõpsake nuppu Käivita.
See peaks tagastama järgmise:
Step 4) SELECT-lause kombineerimiseks WHERE-klausliga:
- Tippige päringuredaktorisse järgmine käsk:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Klõpsake nuppu Käivita.
See peaks tagastama järgmise:
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.
Step 3)
1. Tippige päringuredaktorisse järgmine käsk, et kontrollida, kas muudatus õnnestus:
SELECT * FROM Employees;
2. Klõpsake nuppu Käivita.
See peaks tagastama järgmise:
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.
See peaks tagastama järgmise:
Laienevad massiivid
Step 1) Tippige päringuredaktorisse järgmine päring:
SELECT name, unnest(contact) FROM Employees;
Step 2) Klõpsake nuppu Käivita.
See peaks tagastama järgmise:
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