PostgreSQL Niz: funkcije, vrsta, primjer
ล to je PostgreSQL Niz?
In PostgreSQL, moลพemo definirati stupac 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 vrsta podataka dolazi s relevantnom vrstom polja. Na primjer, tip podataka integer ima tip niza integer[], tip podataka znakova ima tip niza character[], itd.
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 pokrenuti.
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, odnosno kontakta, umetnute su kao niz. To je postignuto koriลกtenjem konstruktora ARRAY.
U ovom primjeru smo ih zatvorili 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 upite elemenata niza koristimo naredbu SELECT.
Da bismo vidjeli sadrลพaj naลกe tablice Zaposlenici, pokreฤemo sljedeฤu naredbu:
SELECT * FROM Employees;
Ovo vraฤa sljedeฤe:
Elementi stupca niza, odnosno kontakt, stavljeni su u vitiฤaste zagrade {}.
Za pristup samim elementima niza, dodajemo indeks unutar uglatih zagrada []. Prvi element u nizu nalazi se na poziciji 1.
Na primjer, moramo dobiti imena zaposlenika i samo njihov prvi kontakt za one zaposlenike s viลกe od jednog kontakta. Ovome moลพemo pristupiti kao kontakt[1].
Da vidimo ovo:
SELECT name, contact[1] FROM Employees;
Ovo ฤe vratiti sljedeฤe:
Moลพemo koristiti naredbu SELECT zajedno s klauzulom WHERE za filtriranje redaka na temelju stupca polja.
Na primjer, da bismo vidjeli zaposlenika s (408)-567-78234 kao drugi kontakt, 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 jedan element niza.
Evo sadrลพaja tablice zaposlenika:
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 poloลพaj u nizu 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. Ovaj proces je poznat kao proลกirenje polja.
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 ovo.
Na primjer:
SELECT name, unnest(contact) FROM Employees;
Ovo ฤe vratiti sljedeฤe:
Zaposlenici Alice John i James Bush, imaju dva kontakta. Moลพemo se podijeliti u zasebne redove.
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.
- Kliknite 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)
Za koriลกtenje vitiฤastih zagrada u upitu
Korak 1) Unesite 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"}'
);
Korak 2) Kliknite gumb Izvrลกi:
Upit za podatke polja
Korak 1) Da biste vidjeli sadrลพaj tablice Zaposlenici, upiลกite sljedeฤi upit u ureฤivaฤ upita:
SELECT * FROM Employees;
Korak 2) Pritisnite gumb Izvrลกi:
Trebao bi vratiti sljedeฤe:
Korak 3) Da vidite prve kontakte zaposlenika:
- Unesite sljedeฤi upit u ureฤivaฤ upita:
SELECT name, contact[1] FROM Employees;
- Pritisnite gumb Izvrลกi.
Trebao bi vratiti sljedeฤe:
Korak 4) Za kombiniranje naredbe SELECT s klauzulom WHERE:
- Unesite sljedeฤu naredbu u ureฤivaฤ upita:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Pritisnite gumb Izvrลกi.
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)
1. Upiลกite sljedeฤu naredbu u ureฤivaฤ upita kako biste provjerili je li promjena bila uspjeลกna:
SELECT * FROM Employees;
2. Pritisnite gumb Izvrลกi.
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:
Rezime
- PostgreSQL omoguฤuje nam da definiramo stupac tablice kao vrstu polja.
- Niz mora biti valjan tip podataka kao ลกto su cijeli brojevi, znakovi ili korisniฤki definirani tipovi.
- Za umetanje vrijednosti u stupac niza koristimo konstruktor NIZ.
- Ako postoji viลกe od jednog elementa u istom retku stupca niza, prvi element je na poziciji 1.
- Svakoj vrijednosti se moลพe pristupiti prosljeฤivanjem indeksa unutar uglatih zagrada [].
- Elementi niza mogu se dohvatiti pomoฤu naredbe SELECT.
- Vrijednosti stupca polja mogu se staviti u uglate zagrade [] ili vitiฤaste zagrade {}.
- Vrijednosti stupca niza moลพemo pretraลพivati โโpomoฤu funkcije ANY().






























