PostgreSQL Stvorite prikaz s primjerom

โšก Pametni saลพetak

PostgreSQL Prikazi su pseudo-tablice izgraฤ‘ene iz pohranjenog SELECT upita, ลกto vam omoguฤ‡uje da sloลพene ili ฤesto koriลกtene upite omotate iza jednog imena koje moลพete ฤitati, aลพurirati ili brisati kao obiฤnu tablicu.

  • ๐Ÿ—‚๏ธ Pseudo-tablica: Prikaz pohranjuje upit, a ne podatke, no ipak ga SELECT-irate kao tablicu.
  • ๐Ÿ› ๏ธ Stvoriti: CREATE VIEW imenuje SELECT upit, ฤak i unutar nekoliko osnovnih tablica, radi lakลกe ponovne upotrebe.
  • โ™ป๏ธ Zamijeniti: STVARANJE ILI ZAMJENA POGLEDA mijenja prikaz bez ispuลกtanjaping to.
  • ๐Ÿ—‘๏ธ Pad: DROP VIEW uklanja prikaz, a IF EXISTS izbjegava greลกku.
  • ๐Ÿค– Pomoฤ‡ za umjetnu inteligenciju: AI asistenti generiraju definicije prikaza i predlaลพu koje upite treba prelomiti.

PostgreSQL Stvori pogled

ล to je PostgreSQL Pogled?

In PostgreSQL, pogled je pseudo-tablica. To znaฤi da pogled nije prava tablica. Meฤ‘utim, moลพemo ga SELECT kao obiฤnu tablicu. Prikaz moลพe imati sve ili neke od stupaca tablice. Pogled takoฤ‘er moลพe biti prikaz viลกe od jedne tablice.

Tablice se nazivaju osnovnim tablicama. Prilikom stvaranja prikaza, samo trebate stvoriti upit, a zatim mu dati ime, ลกto ga ฤini korisnim alatom za prelamanjeping sloลพeni i ฤesto koriลกteni upiti.

Stvaranje PostgreSQL Posjeta

Da biste stvorili PostgreSQL pogled, koristimo naredbu CREATE VIEW. Evo sintakse za ovu izjavu:

CREATE [OR REPLACE] VIEW view-name AS
  SELECT column(s)
  FROM table(s)
  [WHERE condition(s)];

Parametar OR REPLACE zamijenit ฤ‡e pogled ako veฤ‡ postoji. Ako se izostavi, a pogled veฤ‡ postoji, vratit ฤ‡e se pogreลกka.

Parametar naziva prikaza je naziv pogleda koji trebate kreirati.

Uvjet(i) WHERE su opcionalni i moraju biti ispunjeni da bi se bilo koji zapis dodao u prikaz.

Razmotrite donju tablicu cijena:

Cijena:

Stvaranje PostgreSQL Posjeta

Kreirajmo pogled iz gornje tablice:

CREATE VIEW Price_View AS
  SELECT id, price
  FROM Price
  WHERE price > 200;

Gornja naredba ฤ‡e stvoriti prikaz na temelju SELECT izraz. U pregled ฤ‡e biti dodani samo zapisi ฤija je cijena veฤ‡a od 200. Pogled je dobio naziv Price_View. Upitajmo ga da vidimo njegov sadrลพaj:

SELECT *
FROM Price_View;

Ovo vraฤ‡a sljedeฤ‡e:

Stvaranje PostgreSQL Posjeta

Iako osnovna tablica ima 4 zapisa, samo su 2 dodana u prikaz.

Ovdje moลพemo dodati samo jedan stupac u prikaz. Izradimo prikaz koji ukljuฤuje samo jedan stupac tablice Cijena:

CREATE VIEW Price_View2 AS
  SELECT price
  FROM Price
  WHERE price > 200;

Pogled je dobio naziv Price_View2 i ukljuฤuje samo stupac cijena u tablici Cijena. Upitajmo pogled da vidimo njegov sadrลพaj:

SELECT *
FROM Price_View2;

Ovo vraฤ‡a sljedeฤ‡e:

Stvaranje PostgreSQL Posjeta

mijenjanje PostgreSQL Posjeta

Definicija pogleda moลพe se promijeniti bez potrebe za ispuลกtanjem. To se radi pomoฤ‡u naredbe CREATE OR REPLACE VIEW.

Pokaลพimo to aลพuriranjem pogleda pod nazivom Price_View2.

Prikaz cijene 2:

mijenjanje PostgreSQL Posjeta

Tablica knjiga je sljedeฤ‡a:

Rezervirati:

mijenjanje PostgreSQL Posjeta

Tablica cijena je sljedeฤ‡a:

Cijena:

mijenjanje PostgreSQL Posjeta

Sljedeฤ‡i upit pomoฤ‡i ฤ‡e nam aลพurirati pogled Price_View2:

CREATE or REPLACE VIEW Price_View2 AS
  SELECT price, name
  FROM Book
  INNER JOIN Price
  ON Book.id = Price.id
  WHERE price > 200;

Upitajmo sada pogled da vidimo njegov sadrลพaj:

mijenjanje PostgreSQL Posjeta

Pogled je promijenjen i sada imamo dva stupca iz dvije razliฤite tablice. Ovo je postignuto koriลกtenjem JOIN naredbe.

Brisanje PostgreSQL Posjeta

Kad god trebate izbrisati a PostgreSQL prikaz, moลพete koristiti naredbu DROP VIEW. Evo sintakse naredbe:

DROP VIEW [IF EXISTS] view-name;

Parametar naziv-pogleda je naziv pogleda koji se ลพeli izbrisati.

U ovoj sintaksi, IF EXISTS je opcionalan. Ako ga ne navedete i pokuลกate izbrisati prikaz koji ne postoji, dobit ฤ‡ete greลกku.

Na primjer, da ispustimo prikaz pod nazivom Price_View2, moลพemo pokrenuti sljedeฤ‡u izjavu:

DROP VIEW Price_View2;

Pogled ฤ‡e biti izbrisan.

Koristeฤ‡i pgAdmin

Sada pogledajmo kako se ove radnje mogu izvrลกiti pomoฤ‡u pgAdmin-a.

Stvaranje PostgreSQL Posjeta

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 Databases.
  • Pritisnite Demo.

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

CREATE VIEW Price_View AS
  SELECT id, price
  FROM Price
  WHERE price > 200;

Korak 4) Pritisnite gumb Izvrลกi.

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 5) Za pregled sadrลพaja prikaza uฤinite sljedeฤ‡e:

  • Unesite sljedeฤ‡u naredbu u ureฤ‘ivaฤ upita:
SELECT *
FROM Price_View;
  • Pritisnite gumb Izvrลกi.

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Ovo ฤ‡e vratiti sljedeฤ‡e:

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Za izradu prikaza Price_View2 uฤinite sljedeฤ‡e:

Korak 1) Unesite sljedeฤ‡i upit u ureฤ‘ivaฤ upita:

CREATE VIEW Price_View2 AS
  SELECT price
  FROM Price
  WHERE price > 200;

Korak 2) Pritisnite gumb Izvrลกi.

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 3) Da biste vidjeli sadrลพaj prikaza, uฤinite sljedeฤ‡e:

  • Unesite sljedeฤ‡i upit u ureฤ‘ivaฤ upita:
SELECT *
FROM Price_View2;
  • Pritisnite gumb Izvrลกi.

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Ovo ฤ‡e vratiti sljedeฤ‡e:

Stvaranje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

mijenjanje PostgreSQL Posjeta

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 Databases.
  • Pritisnite Demo.

mijenjanje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

CREATE or REPLACE VIEW Price_View2 AS
  SELECT price, name
  FROM Book
  INNER JOIN Price
  ON Book.id = Price.id
  WHERE price > 200;

Korak 4) Pritisnite gumb Izvrลกi.

mijenjanje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 5) Unesite sljedeฤ‡i upit u ureฤ‘ivaฤ upita:

SELECT *
FROM Price_View2;

Ovo ฤ‡e vratiti sljedeฤ‡e:

mijenjanje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Brisanje PostgreSQL Posjeta

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 Databases.
  • Pritisnite Demo.

Brisanje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Korak 3) Unesite upit u ureฤ‘ivaฤ upita:

DROP VIEW Price_View2;

Korak 4) Pritisnite gumb Izvrลกi.

Brisanje PostgreSQL Prikazi pomoฤ‡u pgAdmin-a

Pogled ฤ‡e biti izbrisan.

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

Pitanja i odgovori

Tablica fiziฤki pohranjuje podatke na disku. Prikaz pohranjuje samo SELECT upit, pa upit prema njemu ponovno pokreฤ‡e taj upit i vraฤ‡a trenutne podatke iz osnovnih tablica.

Materijalizirani prikaz pohranjuje rezultat upita u predmemoriju na disku. ฤŒita se brลพe od obiฤnog prikaza, ali je potrebno OSVJEลฝAVANJE MATERIALIZIRANOG PRIKAZA (REFRESH MATERIALIZED VIEW) za prikaz novih podataka.

Standardni prikaz svaki put pokreฤ‡e svoj upit, prikazujuฤ‡i podatke uลพivo. Materijalizirani prikaz pohranjuje rezultate na disk radi brzine, ali moลพe biti zastario dok se ne osvjeลพi.

Ponekad. Jednostavan prikaz s jednom tablicom bez agregacije se automatski aลพurira, pa INSERT, UPDATE i DELETE rade izravno. Sloลพeni prikazi trebaju okidaฤe UMJESTO OF.

Upit u katalogu: SELECT table_name FROM information_schema.views WHERE table_schema = 'public'. U pgAdminu moลพete proลกiriti ฤvor Views pod shemom.

AI asistenti pretvaraju zahtjev napisan jednostavnim jezikom u naredbu CREATE VIEW, imenuju prikaz i dodaju odgovarajuฤ‡e klauzule WHERE i JOIN, ubrzavajuฤ‡i upite koje ฤesto ponovno koristite.

Da. Zalijepite dugi SELECT i AI asistent ฤ‡e ga omotati u CREATE OR REPLACE VIEW, predloลพiti naziv i oznaฤiti stupce kojima su potrebni aliasi kako bi se izbjegla duplikacija naziva.

Normalni prikaz ne ubrzava upite jer se njegov SELECT izvrลกava svaki put. Za brลพe ponovljeno ฤitanje koristite materijalizirani prikaz koji pohranjuje rezultate na disk dok se ne osvjeลพe.

Saลพmite ovu objavu uz: