PostgreSQL Skapa vy med exempel

โšก Smart sammanfattning

PostgreSQL Vyer รคr pseudotabeller som byggs frรฅn en lagrad SELECT-frรฅga, vilket lรฅter dig radbryta komplexa eller ofta anvรคnda frรฅgor bakom ett enda namn som du kan lรคsa, uppdatera eller ta bort som en vanlig tabell.

  • ๐Ÿ—‚๏ธ Pseudotabel: En vy lagrar en frรฅga, inte data, men du Vร„LJER den som en tabell.
  • ๐Ÿ› ๏ธ Skapa: CREATE VIEW namnger en SELECT-frรฅga, รคven รถver flera bastabeller, fรถr enkel รฅteranvรคndning.
  • โ™ป๏ธ Ersรคtt: SKAPA ELLER ERSร„TT VY รคndrar en vy utan att slรคppa denping det.
  • ๐Ÿ—‘๏ธ Slรคppa: DROP VIEW tar bort en vy, och IF EXISTS undviker ett fel.
  • ๐Ÿค– AI-hjรคlp: AI-assistenter genererar vydefinitioner och fรถreslรฅr vilka frรฅgor som ska radbrytas.

PostgreSQL Skapa vy

Vad รคr PostgreSQL Se?

In PostgreSQL, en vy รคr en pseudotabell. Det betyder att en vy inte รคr ett riktigt bord. Men vi kan Vร„LJA den som en vanlig tabell. En vy kan ha alla eller nรฅgra av tabellkolumnerna. En vy kan ocksรฅ vara en representation av mer รคn en tabell.

Tabellerna kallas bastabeller. Nรคr du skapar en vy behรถver du bara skapa en frรฅga och sedan ge den ett namn, vilket gรถr den till ett anvรคndbart verktyg fรถr radbrytning.ping komplexa och vanligt fรถrekommande frรฅgor.

Skapa PostgreSQL Visningar

Fรถr att skapa en PostgreSQL view anvรคnder vi CREATE VIEW-satsen. Hรคr รคr syntaxen fรถr detta uttalande:

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

Parametern OR REPLACE kommer att ersรคtta vyn om den redan finns. Om den utelรคmnas och vyn redan finns kommer ett fel att returneras.

Parametern view-name รคr namnet pรฅ vyn som du behรถver skapa.

WHERE-villkoren รคr valfria och mรฅste vara uppfyllda fรถr att en post ska kunna lรคggas till i vyn.

Tรคnk pรฅ pristabellen nedan:

Pris:

Skapa PostgreSQL Visningar

Lรฅt oss skapa en vy frรฅn tabellen ovan:

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

Kommandot ovan kommer att skapa en vy baserad pรฅ SELECT-sats. Endast de poster dรคr priset รคr hรถgre รคn 200 kommer att lรคggas till i vyn. Vyn har fรฅtt namnet Price_View. Lรฅt oss frรฅga den fรถr att se dess innehรฅll:

SELECT *
FROM Price_View;

Detta returnerar fรถljande:

Skapa PostgreSQL Visningar

ร„ven om bastabellen har 4 poster lades endast 2 till i vyn.

Hรคr kan vi bara lรคgga till en kolumn i vyn. Lรฅt oss skapa en vy som bara innehรฅller en kolumn frรฅn pristabellen:

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

Vyn har fรฅtt namnet Price_View2 och inkluderar endast priskolumnen i pristabellen. Lรฅt oss frรฅga vyn fรถr att se dess innehรฅll:

SELECT *
FROM Price_View2;

Detta returnerar fรถljande:

Skapa PostgreSQL Visningar

Skiftande PostgreSQL Visningar

Definitionen av en vy kan รคndras utan att behรถva slรคppa den. Detta gรถrs med hjรคlp av CREATE OR REPLACE VIEW-satsen.

Lรฅt oss visa detta genom att uppdatera vyn som heter Price_View2.

Price_View2:

Skiftande PostgreSQL Visningar

Boktabellen รคr som fรถljer:

Bok:

Skiftande PostgreSQL Visningar

Pristabellen รคr som fรถljer:

Pris:

Skiftande PostgreSQL Visningar

Fรถljande frรฅga hjรคlper oss att uppdatera vyn 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;

Lรฅt oss nu frรฅga vyn fรถr att se dess innehรฅll:

Skiftande PostgreSQL Visningar

Vyn har รคndrats, och nu har vi tvรฅ kolumner frรฅn tvรฅ olika tabeller. Detta har uppnรฅtts med hjรคlp av en JOIN-sats.

Radera PostgreSQL Visningar

Nรคr du behรถver ta bort en PostgreSQL I en vy kan du anvรคnda DROP VIEW-satsen. Hรคr รคr syntaxen fรถr satsen:

DROP VIEW [IF EXISTS] view-name;

Parametern view-name รคr namnet pรฅ vyn som ska raderas.

I den hรคr syntaxen รคr IF EXISTS valfritt. Om du inte anger det och fรถrsรถker ta bort en vy som inte finns fรฅr du ett felmeddelande.

Fรถr att till exempel ta bort vyn med namnet Price_View2 kan vi kรถra fรถljande uttalande:

DROP VIEW Price_View2;

Vyn kommer att raderas.

Anvรคnder pgAdmin

Lรฅt oss nu se hur dessa รฅtgรคrder kan utfรถras med pgAdmin.

Skapa PostgreSQL Visningar

Fรถr att รฅstadkomma samma sak genom pgAdmin, gรถr sรฅ hรคr:

Steg 1) Logga in pรฅ ditt pgAdmin-konto.

Steg 2)

  • Klicka pรฅ Databaser i navigeringsfรคltet till vรคnster.
  • Klicka pรฅ Demo.

Skapa PostgreSQL Visningar med pgAdmin

Steg 3) Skriv in frรฅgan i frรฅgeredigeraren:

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

Steg 4) Klicka pรฅ knappen Kรถr.

Skapa PostgreSQL Visningar med pgAdmin

Steg 5) Fรถr att visa innehรฅllet i vyn, gรถr fรถljande:

  • Skriv fรถljande kommando i frรฅgeredigeraren:
SELECT *
FROM Price_View;
  • Klicka pรฅ knappen Kรถr.

Skapa PostgreSQL Visningar med pgAdmin

Detta kommer att returnera fรถljande:

Skapa PostgreSQL Visningar med pgAdmin

Gรถr fรถljande fรถr att skapa vyn Price_View2:

Steg 1) Skriv in fรถljande frรฅga i frรฅgeredigeraren:

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

Steg 2) Klicka pรฅ knappen Kรถr.

Skapa PostgreSQL Visningar med pgAdmin

Steg 3) Gรถr fรถljande fรถr att se innehรฅllet i vyn:

  • Skriv in fรถljande frรฅga i frรฅgeredigeraren:
SELECT *
FROM Price_View2;
  • Klicka pรฅ knappen Kรถr.

Skapa PostgreSQL Visningar med pgAdmin

Detta kommer att returnera fรถljande:

Skapa PostgreSQL Visningar med pgAdmin

Skiftande PostgreSQL Visningar

Fรถr att รฅstadkomma samma sak genom pgAdmin, gรถr sรฅ hรคr:

Steg 1) Logga in pรฅ ditt pgAdmin-konto.

Steg 2)

  • Klicka pรฅ Databaser i navigeringsfรคltet till vรคnster.
  • Klicka pรฅ Demo.

Skiftande PostgreSQL Visningar med pgAdmin

Steg 3) Skriv in frรฅgan i frรฅgeredigeraren:

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

Steg 4) Klicka pรฅ knappen Kรถr.

Skiftande PostgreSQL Visningar med pgAdmin

Steg 5) Skriv in fรถljande frรฅga i frรฅgeredigeraren:

SELECT *
FROM Price_View2;

Detta kommer att returnera fรถljande:

Skiftande PostgreSQL Visningar med pgAdmin

Radera PostgreSQL Visningar

Fรถr att รฅstadkomma samma sak genom pgAdmin, gรถr sรฅ hรคr:

Steg 1) Logga in pรฅ ditt pgAdmin-konto.

Steg 2)

  • Klicka pรฅ Databaser i navigeringsfรคltet till vรคnster.
  • Klicka pรฅ Demo.

Radera PostgreSQL Visningar med pgAdmin

Steg 3) Skriv in frรฅgan i frรฅgeredigeraren:

DROP VIEW Price_View2;

Steg 4) Klicka pรฅ knappen Kรถr.

Radera PostgreSQL Visningar med pgAdmin

Vyn kommer att raderas.

Ladda ner den databas som anvรคnds i denna handledning

Vanliga frรฅgor

En tabell lagrar fysiskt data pรฅ disk. En vy lagrar bara en SELECT-frรฅga, sรฅ att frรฅga den kรถr frรฅgan igen och returnerar aktuell data frรฅn bastabellerna.

En materialiserad vy cachar ett frรฅgeresultat pรฅ disk. Den lรคser snabbare รคn en vanlig vy men behรถver REFRESH MATERIALIZED VY fรถr att visa ny data.

En standardvy kรถr sin frรฅga varje gรฅng och visar livedata. En materialiserad vy lagrar resultaten pรฅ disk fรถr snabbhet men kan vara inaktuell tills den uppdateras.

Ibland. En enkel tabellvy utan aggregering kan uppdateras automatiskt, sรฅ INSERT, UPDATE och DELETE fungerar direkt. Komplexa vyer behรถver ISTร„LLET Fร–R triggers.

Frรฅga katalogen: SELECT table_name FROM information_schema.views WHERE table_schema = 'public'. I pgAdmin kan du expandera noden Views under ett schema.

AI-assistenter omvandlar en fรถrfrรฅgan i enkelt sprรฅk till en CREATE VIEW-sats, namnger vyn och lรคgger till rรคtt WHERE- och JOIN-klausuler, vilket snabbar upp frรฅgor som du รฅteranvรคnder ofta.

Ja. Klistra in ett lรฅngt SELECT-tecken sรฅ omsluter en AI-assistent den i CREATE OR REPLACE VIEW, fรถreslรฅr ett namn och flaggar kolumner som behรถver alias fรถr att undvika dubbletter av namn.

En normal vy snabbar inte upp frรฅgor eftersom dess SELECT kรถrs varje gรฅng. Fรถr snabbare upprepade lรคsningar, anvรคnd en materialiserad vy, som lagrar resultaten pรฅ disken tills de uppdateras.

Sammanfatta detta inlรคgg med: