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().

  • ???? Definicija: bilo koji PostgreSQL tip podataka ima odgovarajuฤ‡i tip polja, kao ลกto je integer[].
  • ๐Ÿงฑ Kreiraj i ubaci: Koristite stupce TEXT[] i konstruktor ARRAY ili vitiฤaste zagrade.
  • ๐Ÿ”Ž upita: Pristupite elementima s indeksima; prvi element je na poziciji 1.
  • โœ๏ธ Izmijeni i pretraลพi: Aลพurirajte pojedinaฤne elemente i pretraลพite vrijednosti pomoฤ‡u ANY().
  • โž— Proลกiriti: Funkcija unnest() dijeli vrijednosti polja u odvojene retke.

PostgreSQL Poredak

ล 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.

Stvaranje PostgreSQL nizovi

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.

Umetanje PostgreSQL Vrijednosti polja

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.

Umetanje PostgreSQL Vrijednosti polja

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:

Upit za podatke polja

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:

Upit za podatke polja

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:

Upit za podatke polja

Modificiranje PostgreSQL Poredak

Moลพete aลพurirati sve ili samo jedan element niza. Evo sadrลพaja tablice Zaposlenici:

Modificiranje PostgreSQL Poredak

Aลพurirajmo drugi telefonski broj zaposlenika Jamesa Busha, ฤiji je ID 3:

Modificiranje PostgreSQL Poredak

Pokrenite sljedeฤ‡u naredbu:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

Naredba bi se trebala uspjeลกno izvesti:

Modificiranje PostgreSQL Poredak

Upitajmo tablicu da provjerimo je li promjena bila uspjeลกna:

Modificiranje PostgreSQL Poredak

Promjena je bila uspjeลกna.

Pretraลพivanje u a PostgreSQL Poredak

Trenutaฤno je tablica naลกih zaposlenika sljedeฤ‡a:

Pretraลพivanje u a PostgreSQL Poredak

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:

Pretraลพivanje u a PostgreSQL Poredak

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:

Proลกirujuฤ‡i nizovi

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)

  1. Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
  2. Kliknite na gumb Demo.

Stvaranje PostgreSQL Nizovi pomoฤ‡u pgAdmin-a

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.

Stvaranje PostgreSQL Nizovi pomoฤ‡u pgAdmin-a

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:

Umetanje PostgreSQL Vrijednosti polja

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:

Umetanje PostgreSQL Vrijednosti polja

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:

Upit za podatke polja pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Upit za podatke polja pomoฤ‡u pgAdmin-a

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;

Upit za podatke polja pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Upit za podatke polja pomoฤ‡u pgAdmin-a

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';

Upit za podatke polja pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Upit za podatke polja pomoฤ‡u pgAdmin-a

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.

Modificiranje PostgreSQL Niz pomoฤ‡u pgAdmin-a

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;

Modificiranje PostgreSQL Niz pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Modificiranje PostgreSQL Niz pomoฤ‡u pgAdmin-a

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.

Pretraลพivanje u a PostgreSQL Niz pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Pretraลพivanje u a PostgreSQL Niz pomoฤ‡u pgAdmin-a

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.

Proลกirivanje nizova pomoฤ‡u pgAdmin-a

Trebao bi vratiti sljedeฤ‡e:

Proลกirivanje nizova pomoฤ‡u pgAdmin-a

Preuzmite bazu podataka koriลกtenu u ovom vodiฤu

Pitanja i odgovori

Da. AI asistenti mogu pisati CREATE TABLE naredbe s nizom stupaca, INSERT naredbe pomoฤ‡u ARRAY ili vitiฤastih zagrada i funkcije poput unnest() ili ANY(). Testirajte generirani SQL na svojoj shemi prije pokretanja.

Da. Alati umjetne inteligencije mogu savjetovati odgovara li vaลกim podacima stupac polja ili normalizirana podreฤ‘ena tablica. Polja odgovaraju malim, fiksnim popisima, dok odvojene tablice odgovaraju velikim ili ฤesto upitanim odnosima. Validirajte pomoฤ‡u svojih obrazaca upita.

Koristite funkciju array_length(array, dimension). Na primjer, array_length(contact, 1) vraฤ‡a broj elemenata u prvoj dimenziji kontaktnog polja.

Da. Koristite funkciju array_append(array, value) ili operator spajanja ||. Na primjer, UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') dodaje novi element.

Saลพmite ovu objavu uz: