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().
Preuzmite bazu podataka korištenu u ovom vodiču