PostgreSQL Niz: funkcije, vrsta, primjer
โก Pametni saลพetak
PostgreSQL Niz vam omoguฤuje definiranje stupca tablice kao niza bilo kojeg valjanog tipa podataka. Obuhvaฤa stvaranje stupaca niza, umetanje vrijednosti pomoฤu konstruktora ARRAY ili vitiฤastih zagrada, upite i modificiranje elemenata te pretraลพivanje pomoฤu ANY().

ล to je PostgreSQL Niz?
In PostgreSQL, stupac moลพemo definirati kao niz valjanih tipova podataka. Tip podataka moลพe biti ugraฤen, korisniฤki definiran ili nabrojani tip. Osim toga, nizovi igraju vaลพnu ulogu u PostgreSQL.
Svaki odgovarajuฤi PostgreSQL Tip podataka dolazi s odgovarajuฤim tipom polja. Na primjer, tip podataka integer ima tip polja integer[], tip podataka character ima tip polja character[] i tako dalje.
Stvaranje PostgreSQL nizovi
U sljedeฤem primjeru stvorit ฤemo tablicu pod nazivom Zaposlenici sa stupcem kontakta definiranim kao tekstualno polje:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Naredba bi se trebala uspjeลกno izvesti.
Umetanje PostgreSQL Vrijednosti polja
Pustite nas sada INSERT vrijednosti u gornju tablicu:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Umetanje bi se trebalo uspjeลกno pokrenuti.
Vrijednosti treฤeg stupca, tj. kontakta, umetnute su kao niz. To je postignuto koriลกtenjem konstruktora ARRAY. U ovom primjeru, stavili smo ih u uglate zagrade []. Imamo dva kontakta za zaposlenicu Alice John.
Joลก uvijek moลพemo koristiti vitiฤaste zagrade {} kao ลกto je prikazano u nastavku:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Naredba bi se trebala uspjeลกno izvesti.
Gornje izjave umetnut ฤe dva retka u tablicu zaposlenika. Kada koristite vitiฤaste zagrade, niz je stavljen unutar jednostrukih navodnika ('), dok su stavke tekstualnog niza ovijene unutar dvostrukih navodnika (โ).
Upit za podatke polja
Za upit elemenata niza koristimo naredbu SELECT. Za pregled sadrลพaja naลกe tablice Zaposlenici pokreฤemo sljedeฤu naredbu:
SELECT * FROM Employees;
Ovo vraฤa sljedeฤe:
Elementi stupca polja, tj. kontakt, zatvoreni su vitiฤastim zagradama {}. Za pristup samim elementima polja dodajemo indeks unutar uglatih zagrada []. Prvi element u polju je na poziciji 1.
Na primjer, trebamo dobiti imena zaposlenika i samo njihov prvi kontakt za one zaposlenike s viลกe od jednog kontakta. Tome moลพemo pristupiti kao kontakt[1]. Pogledajmo ovo:
SELECT name, contact[1] FROM Employees;
Ovo ฤe vratiti sljedeฤe:
Naredbu SELECT moลพemo koristiti zajedno s klauzulom WHERE za filtriranje redaka na temelju stupca polja. Na primjer, da bismo vidjeli zaposlenika s (408)-567-78234 kao drugim kontaktom, moลพemo pokrenuti sljedeฤu naredbu:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Ovo ฤe vratiti sljedeฤe:
Modificiranje PostgreSQL Poredak
Moลพete aลพurirati sve ili samo jedan element niza. Evo sadrลพaja tablice Zaposlenici:
Aลพurirajmo drugi telefonski broj zaposlenika Jamesa Busha, ฤiji je ID 3:
Pokrenite sljedeฤu naredbu:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Naredba bi se trebala uspjeลกno izvesti:
Upitajmo tablicu da provjerimo je li promjena bila uspjeลกna:
Promjena je bila uspjeลกna.
Pretraลพivanje u a PostgreSQL Poredak
Trenutaฤno je tablica naลกih zaposlenika sljedeฤa:
Pretpostavimo da trebamo znati tko je vlasnik kontakta (408)-783-5731 bez obzira na poziciju unutar polja kontakata. Moลพemo koristiti funkciju ANY() kao ลกto je prikazano u nastavku:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Ovo ฤe vratiti sljedeฤe:
Proลกirujuฤi nizovi
Vrijednosti niza moลพemo podijeliti u retke. Taj se postupak naziva proลกirenje niza. U primjeru tablice Zaposlenici, postoje neki zaposlenici s dva kontakta u nizu kontakata. Moลพemo ih podijeliti u zasebne retke. PostgreSQL pruลพa funkciju unnest() koja se moลพe koristiti za to. Na primjer:
SELECT name, unnest(contact) FROM Employees;
Ovo ฤe vratiti sljedeฤe:
Zaposlenici Alice John i James Bush imaju dva kontakta. Moลพemo ih podijeliti u odvojene retke.
Koristeฤi pgAdmin
Stvaranje PostgreSQL nizovi
Da biste postigli isto putem pgAdmina, uฤinite ovo:
Korak 1) Prijavite se na svoj pgAdmin raฤun.
Korak 2)
- Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
- Kliknite na gumb Demo.
Korak 3) Upiลกite upit u ureฤivaฤ upita za izradu tablice Zaposlenici:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Korak 4) Pritisnite gumb Izvrลกi.
Umetanje PostgreSQL Vrijednosti polja
Korak 1) Unesite sljedeฤi upit u ureฤivaฤ upita:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Korak 2) Pritisnite gumb Izvrลกi:
Korak 3) Da biste u upitu koristili vitiฤaste zagrade, upiลกite sljedeฤi upit u ureฤivaฤ upita:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Zatim kliknite gumb Izvrลกi:
Upit za podatke polja
Korak 1) Da biste vidjeli sadrลพaj tablice Zaposlenici, u ureฤivaฤ upita upiลกite sljedeฤi upit:
SELECT * FROM Employees;
Korak 2) Pritisnite gumb Izvrลกi:
Trebao bi vratiti sljedeฤe:
Korak 3) Za pregled prvih kontakata zaposlenika upiลกite sljedeฤi upit u ureฤivaฤ upita i kliknite gumb Izvrลกi:
SELECT name, contact[1] FROM Employees;
Trebao bi vratiti sljedeฤe:
Korak 4) Za kombiniranje naredbe SELECT s klauzulom WHERE, upiลกite sljedeฤu naredbu u ureฤivaฤ upita i kliknite gumb Izvrลกi:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Trebao bi vratiti sljedeฤe:
Modificiranje PostgreSQL Poredak
Korak 1) Za aลพuriranje drugog kontakta korisnika s ID-om 3, pokrenite sljedeฤu naredbu:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Korak 2) Pritisnite gumb Izvrลกi.
Korak 3) U ureฤivaฤ upita upiลกite sljedeฤu naredbu kako biste provjerili je li promjena bila uspjeลกna, a zatim kliknite gumb Izvrลกi:
SELECT * FROM Employees;
Trebao bi vratiti sljedeฤe:
Pretraลพivanje u a PostgreSQL Poredak
Korak 1) Unesite sljedeฤi upit u ureฤivaฤ upita:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Korak 2) Pritisnite gumb Izvrลกi.
Trebao bi vratiti sljedeฤe:
Proลกirujuฤi nizovi
Korak 1) Unesite sljedeฤi upit u ureฤivaฤ upita:
SELECT name, unnest(contact) FROM Employees;
Korak 2) Pritisnite gumb Izvrลกi.
Trebao bi vratiti sljedeฤe:
Preuzmite bazu podataka koriลกtenu u ovom vodiฤu






























