PostgreSQL Vytvořit pohled s příkladem

⚡ Chytré shrnutí

PostgreSQL Pohledy (views) jsou pseudo-tabulky vytvořené z uloženého dotazu SELECT, které umožňují zabalit složité nebo často používané dotazy za jeden název, který můžete číst, aktualizovat nebo odstraňovat jako běžnou tabulku.

  • 🗂️ Pseudo-tabulka: Pohled ukládá dotaz, nikoli data, a přesto jej vyberete jako tabulku.
  • 🛠️ Vytvořit: CREATE VIEW pojmenovává dotaz SELECT, a to i napříč několika základními tabulkami, pro snadné opětovné použití.
  • ♻️ Nahradit: VYTVOŘIT NEBO NAHRADIT POHLED změní pohled bez jeho odstranění.ping to.
  • 🗑️ Drop: DROP VIEW odstraní pohled a IF EXISTS zabrání chybě.
  • 🤖 Nápověda s umělou inteligencí: Asistenti umělé inteligence generují definice zobrazení a navrhují, které dotazy zabalit.

PostgreSQL Vytvořit zobrazení

Co je to PostgreSQL Pohled?

In PostgreSQL, pohled je pseudotabulka. To znamená, že pohled není skutečnou tabulkou. Můžeme jej však VYBRAT jako obyčejnou tabulku. Pohled může mít všechny nebo některé sloupce tabulky. Pohled může být také reprezentací více než jedné tabulky.

Tyto tabulky se označují jako základní tabulky. Při vytváření zobrazení stačí vytvořit dotaz a poté mu dát název, což z něj činí užitečný nástroj pro zalamování.ping složité a běžně používané dotazy.

Vytvoření PostgreSQL Zobrazení

Vytvoření PostgreSQL zobrazení, použijeme příkaz CREATE VIEW. Zde je syntaxe tohoto příkazu:

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

Parametr OR REPLACE nahradí pohled, pokud již existuje. Pokud je vynechán a pohled již existuje, bude vrácena chyba.

Parametr view-name je název pohledu, který potřebujete vytvořit.

Podmínky WHERE jsou volitelné a musí být splněny, aby bylo možné do zobrazení přidat jakýkoli záznam.

Zvažte níže uvedenou cenovou tabulku:

Cena:

Vytvoření PostgreSQL Zobrazení

Vytvořme pohled z výše uvedené tabulky:

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

Výše uvedený příkaz vytvoří pohled založený na příkaz SELECT. Do náhledu budou přidány pouze záznamy, kde je cena vyšší než 200. Pohled dostal název Price_View. Zeptejme se ho, abychom viděli jeho obsah:

SELECT *
FROM Price_View;

To vrátí následující:

Vytvoření PostgreSQL Zobrazení

I když má základní tabulka 4 záznamy, do pohledu byly přidány pouze 2.

Zde můžeme do zobrazení přidat pouze jeden sloupec. Vytvořme zobrazení, které bude obsahovat pouze jeden sloupec tabulky Price:

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

Pohled dostal název Price_View2 a obsahuje pouze sloupec s cenou v tabulce Price. Zašleme dotaz na pohled, abychom viděli jeho obsah:

SELECT *
FROM Price_View2;

To vrátí následující:

Vytvoření PostgreSQL Zobrazení

Měnící se PostgreSQL Zobrazení

Definici pohledu lze změnit, aniž byste jej museli rušit. To se provádí pomocí příkazu CREATE OR REPLACE VIEW.

Ukažme si to aktualizací pohledu s názvem Price_View2.

Price_View2:

Měnící se PostgreSQL Zobrazení

Tabulka knihy je následující:

Rezervovat:

Měnící se PostgreSQL Zobrazení

Tabulka cen je následující:

Cena:

Měnící se PostgreSQL Zobrazení

Následující dotaz nám pomůže aktualizovat zobrazení 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;

Pojďme se nyní dotázat pohledu, abychom viděli jeho obsah:

Měnící se PostgreSQL Zobrazení

Pohled byl změněn a nyní máme dva sloupce ze dvou různých tabulek. Toho bylo dosaženo pomocí příkazu JOIN.

mazání PostgreSQL Zobrazení

Kdykoli potřebujete smazat a PostgreSQL zobrazení můžete použít příkaz DROP VIEW. Syntaxe příkazu je následující:

DROP VIEW [IF EXISTS] view-name;

Parametr view-name je název pohledu, který má být odstraněn.

V této syntaxi je argument IF EXISTS volitelný. Pokud jej nezadáte a pokusíte se smazat neexistující zobrazení, zobrazí se chyba.

Chcete-li například zrušit zobrazení s názvem Price_View2, můžeme spustit následující příkaz:

DROP VIEW Price_View2;

Pohled bude smazán.

Pomocí pgAdmin

Nyní se podívejme, jak lze tyto akce provést pomocí pgAdmin.

Vytvoření PostgreSQL Zobrazení

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  • Na navigační liště vlevo klikněte na Databáze.
  • Klepněte na tlačítko Demo.

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Krok 5) Chcete-li zobrazit obsah zobrazení, proveďte následující:

  • V editoru dotazů zadejte následující příkaz:
SELECT *
FROM Price_View;
  • Klepněte na tlačítko Spustit.

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Tím se vrátí následující:

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Chcete-li vytvořit zobrazení Price_View2, postupujte takto:

Krok 1) V editoru dotazů zadejte následující dotaz:

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

Krok 2) Klepněte na tlačítko Spustit.

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Krok 3) Chcete-li zobrazit obsah zobrazení, postupujte takto:

  • V editoru dotazů zadejte následující dotaz:
SELECT *
FROM Price_View2;
  • Klepněte na tlačítko Spustit.

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Tím se vrátí následující:

Vytvoření PostgreSQL Pohledy pomocí pgAdmin

Měnící se PostgreSQL Zobrazení

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  • Na navigační liště vlevo klikněte na Databáze.
  • Klepněte na tlačítko Demo.

Měnící se PostgreSQL Pohledy pomocí pgAdmin

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

Měnící se PostgreSQL Pohledy pomocí pgAdmin

Krok 5) V editoru dotazů zadejte následující dotaz:

SELECT *
FROM Price_View2;

Tím se vrátí následující:

Měnící se PostgreSQL Pohledy pomocí pgAdmin

mazání PostgreSQL Zobrazení

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  • Na navigační liště vlevo klikněte na Databáze.
  • Klepněte na tlačítko Demo.

mazání PostgreSQL Pohledy pomocí pgAdmin

Krok 3) Zadejte dotaz v editoru dotazů:

DROP VIEW Price_View2;

Krok 4) Klepněte na tlačítko Spustit.

mazání PostgreSQL Pohledy pomocí pgAdmin

Pohled bude smazán.

Stáhněte si databázi použitou v tomto kurzu

Nejčastější dotazy

Tabulka fyzicky ukládá data na disk. Pohled ukládá pouze dotaz SELECT, takže jeho dotazování tento dotaz znovu spustí a vrátí aktuální data ze základních tabulek.

Materializovaný pohled ukládá výsledek dotazu do mezipaměti na disk. Čte se rychleji než prostý pohled, ale pro zobrazení nových dat je potřeba příkaz REFRESH MATERIALIZED VIEW (OBNOVIT MATERIALIZOVANÝ POHLED).

Standardní zobrazení spustí svůj dotaz pokaždé a zobrazí živá data. Materializované zobrazení ukládá výsledky na disk pro urychlení, ale může být zastaralé, dokud není aktualizováno.

Někdy. Jednoduchý pohled s jednou tabulkou bez agregace je automaticky aktualizovatelný, takže INSERT, UPDATE a DELETE fungují přímo. Složité pohledy potřebují MÍSTO triggerů INSTEAD OF.

Dotaz do katalogu: SELECT název_tabulky FROM information_schema.views WHERE schéma_tabulky = 'public'. V pgAdminu můžete rozbalit uzel Zobrazení pod schématem.

Asistenti s umělou inteligencí přemění požadavek v prostém jazyce na příkaz CREATE VIEW, pojmenují pohled a přidají správné klauzule WHERE a JOIN, čímž zrychlí dotazy, které často opakovaně používáte.

Ano. Vložte dlouhý příkaz SELECT a asistent s umělou inteligencí jej zabalí do CREATE OR REPLACE VIEW, navrhne název a označí sloupce, které potřebují aliasy, aby se zabránilo duplicitním názvům.

Normální zobrazení nezrychluje dotazy, protože jeho SELECT se spustí pokaždé. Pro rychlejší opakované čtení použijte materializované zobrazení, které ukládá výsledky na disk, dokud nejsou aktualizovány.

Shrňte tento příspěvek takto: