logo

SQL-vyer

Visningar i SQL är ett slags virtuellt bord. En vy har också rader och kolumner som tabeller, men en vy lagrar inte data på disken som en tabell. View definierar en anpassad fråga som hämtar data från en eller flera tabeller och representerar data som om den kom från en enda källa.

Vi kan skapa en vy genom att välja fält från en eller flera tabeller som finns i databasen. En vy kan antingen ha alla rader i en tabell eller specifika rader baserat på vissa villkor.

I den här artikeln kommer vi att lära oss om att skapa, uppdatera och ta bort vyer i SQL.



D emo SQL-databas

Vi kommer att använda dessa två SQL-tabeller till exempel.

Studentdetaljer

Tabell Student

StudentMarks

Tabell Studentbetyg

Du kan skapa dessa tabeller på ditt system genom att skriva följande SQL-fråga:

MySQL
-- Create StudentDetails table CREATE TABLE StudentDetails (  S_ID INT PRIMARY KEY,  NAME VARCHAR(255),  ADDRESS VARCHAR(255) ); INSERT INTO StudentDetails (S_ID, NAME, ADDRESS) VALUES  (1, 'Harsh', 'Kolkata'),  (2, 'Ashish', 'Durgapur'),  (3, 'Pratik', 'Delhi'),  (4, 'Dhanraj', 'Bihar'),  (5, 'Ram', 'Rajasthan'); -- Create StudentMarks table CREATE TABLE StudentMarks (  ID INT PRIMARY KEY,  NAME VARCHAR(255),  Marks INT,  Age INT ); INSERT INTO StudentMarks (ID, NAME, Marks, Age) VALUES  (1, 'Harsh', 90, 19),  (2, 'Suresh', 50, 20),  (3, 'Pratik', 80, 19),  (4, 'Dhanraj', 95, 21),  (5, 'Ram', 85, 18);>

SKAPA VISNINGAR i SQL

Vi kan skapa en vy med hjälp av SKAPA VY påstående. En vy kan skapas från en enda tabell eller flera tabeller.

Syntax

  CREATE VIEW   view_name AS   SELECT   column1, column2.....   FROM   table_name   WHERE   condition;>

Parametrar:

  • view_name : Namn på vyn
  • tabellnamn : Namn på tabellen
  • skick : Villkor för att välja rader

Exempel på SQL CREATE VIEW-sats

Låt oss titta på några exempel på CREATE VIEW-sats i SQL för att få en bättre förståelse för hur man skapar vyer i SQL.

Exempel 1: Skapa vy från en enda tabell

I det här exemplet kommer vi att skapa en vy med namnet DetailsView från tabellen StudentDetails. Fråga:

  CREATE VIEW   DetailsView   AS    SELECT   NAME, ADDRESS   FROM   StudentDetails   WHERE   S_ID <5;>

För att se data i vyn kan vi fråga vyn på samma sätt som vi frågar en tabell.

  SELECT   *   FROM   DetailsView;>

Produktion:

skapa vyexempel

Exempel 2: Skapa vy från tabell

I det här exemplet kommer vi att skapa en vy med namnet StudentNames från tabellen StudentDetails. Fråga:

  CREATE VIEW   StudentNames   AS    SELECT   S_ID, NAME   FROM   StudentDetails   ORDER BY   NAME;>

Om vi ​​nu frågar vyn som,

  SELECT   *   FROM   StudentNames;>

Produktion:

se utdata

Exempel 3: Skapa vy från flera tabeller

I det här exemplet kommer vi att skapa en vy med namnet MarksView från två tabeller StudentDetails och StudentMarks. För att skapa en vy från flera tabeller kan vi helt enkelt inkludera flera tabeller i SELECT-satsen. Fråga:

  CREATE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

För att visa data för View MarksView:

  SELECT   *   FROM   MarksView;>

Produktion:

se utdata

LISTAR ALLA VISNINGAR I EN DATABAS

Vi kan lista Visa med hjälp av VISA HELA TABELLER uttalande eller använda informationsschematabell . En vy kan skapas från en enda tabell eller flera tabeller.

Syntax

  USE   'database_name';   SHOW FULL   TABLES   WHERE   table_type LIKE '%VIEW';>

Använder informationsschema

Hur man laddar ner youtube video vlc
  SELECT   table_name   FROM   information_schema.views   WHERE   table_schema = 'database_name';  OR    SELECT   table_schema, table_name, view_definition   FROM   information_schema.views   WHERE   table_schema = 'database_name';>

DELETE VIEWS i SQL

SQL tillåter oss att ta bort en befintlig vy. Vi kan ta bort eller släppa Visa med hjälp av DROP uttalande .

Syntax

  DROP VIEW   view_name;>

Exempel

I det här exemplet tar vi bort vyn MarksView.

  DROP VIEW   MarksView;>

UPPDATERA VY i SQL

Om du vill uppdatera befintliga data i vyn, använd UPPDATERING påstående.

Syntax

  UPDATE   view_name   SET   column1 = value1, column2 = value2...., columnN = valueN   WHERE   [condition];>

Notera: Alla vyer kan inte uppdateras med UPDATE-satsen.

Om du vill uppdatera vydefinitionen utan att påverka data, använd SKAPA ELLER BYT VY påstående. du kan använda denna syntax

samling java
  CREATE OR REPLACE   VIEW view_name   AS    SELECT   column1, column2, ...   FROM   table_name   WHERE   condition;>

Regler för att uppdatera vyer i SQL:

Vissa villkor måste vara uppfyllda för att uppdatera en vy. Om något av dessa villkor är inte uppfyllt kan vyn inte uppdateras.

  1. SELECT-satsen som används för att skapa vyn bör inte inkludera GROUP BY-sats eller ORDER BY-sats.
  2. SELECT-satsen ska inte ha nyckelordet DISTINCT.
  3. Vyn bör ha alla INTE NULL-värden.
  4. Vyn ska inte skapas med kapslade frågor eller komplexa frågor.
  5. Vyn ska skapas från en enda tabell. Om vyn skapas med hjälp av flera tabeller kommer vi inte att tillåtas att uppdatera vyn.

Exempel

Låt oss titta på olika användningsfall för att uppdatera en vy i SQL. Vi kommer att täcka dessa användningsfall med exempel för att få en bättre förståelse.

Exempel 1: Uppdatera vy för att lägga till eller ersätta ett vyfält

Vi kan använda SKAPA ELLER BYT VY uttalande för att lägga till eller ersätta fält från en vy.

Om vi ​​vill uppdatera vyn MarksView och lägg till fältet AGE i denna View from StudentMarks Tabell, kan vi göra detta genom att:

  CREATE OR REPLACE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

Om vi ​​hämtar all data från MarksView nu som:

  SELECT   *   FROM   MarksView;>

Produktion:

skapa eller ersätta vyexempel

Exempel 2: Uppdatera vy för att infoga en rad i en vy

Vi kan infoga en rad i en vy på samma sätt som vi gör i en tabell. Vi kan använda SÄTT IN I SQL-sats för att infoga en rad i en vy.

I exemplet nedan kommer vi att infoga en ny rad i View DetailsView som vi har skapat ovan i exemplet med att skapa vyer från en enda tabell.

  INSERT INTO   DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>

Om vi ​​hämtar all data från DetailsView nu som,

  SELECT   *   FROM   DetailsView;>

Produktion:

infoga rad i vyexempel

Exempel 3: Ta bort en rad från en vy

Att ta bort rader från en vy är också lika enkelt som att ta bort rader från en tabell. Vi kan använda SQL-satsen DELETE för att ta bort rader från en vy. Om du också tar bort en rad från en vy raderas först raden från den faktiska tabellen och ändringen återspeglas sedan i vyn.

I det här exemplet kommer vi att ta bort den sista raden från vyn DetailsView som vi precis lade till i exemplet ovan med att infoga rader.

  DELETE FROM   DetailsView   WHERE   NAME='Suresh';>

Om vi ​​hämtar all data från DetailsView nu som,

  SELECT   *   FROM   DetailsView;>

Produktion:

ta bort rad från vyexempel

MED KONTROLLVALKlausul

De MED KONTROLLVAL sats i SQL är en mycket användbar klausul för vyer. Det gäller en uppdateringsbar vy.

WITH CHECK OPTION-satsen används för att förhindra datamodifiering (med hjälp av INSERT eller UPDATE) om villkoret i WHERE-satsen i CREATE VIEW-satsen inte är uppfyllt.

Om vi ​​har använt WITH CHECK OPTION-satsen i CREATE VIEW-satsen och om UPDATE- eller INSERT-satsen inte uppfyller villkoren kommer de att returnera ett fel.

MED KONTROLLALTERNATIV Klausulexempel:

I exemplet nedan skapar vi en View SampleView från StudentDetails-tabellen med en WITH CHECK OPTION-sats.

  CREATE VIEW   SampleView AS   SELECT   S_ID, NAME   FROM   StudentDetails   WHERE   NAME IS NOT NULL   WITH CHECK OPTION  ;>

I den här vyn, om vi nu försöker infoga en ny rad med ett nullvärde i NAME-kolumnen så kommer det att ge ett fel eftersom vyn skapas med villkoret för NAME-kolumnen som NOT NULL. Till exempel, även om vyn är uppdateringsbar är inte heller nedanstående fråga för den här vyn giltig:

  INSERT INTO   SampleView(S_ID)   VALUES  (6);>

NOTERA : Standardvärdet för NAME-kolumnen är null .

Användningar av en vy

En bra databas bör innehålla vyer av de angivna anledningarna:

  1. Begränsa dataåtkomst – Vyer ger en extra nivå av tabellsäkerhet genom att begränsa åtkomsten till en förutbestämd uppsättning rader och kolumner i en tabell.
  2. Dölja datakomplexitet – En vy kan dölja komplexiteten som finns i flera sammanfogade tabeller.
  3. Förenkla kommandon för användaren – Med vyer kan användaren välja information från flera tabeller utan att användarna behöver faktiskt veta hur man utför en koppling.
  4. Lagra komplexa frågor – Vyer kan användas för att lagra komplexa frågor.
  5. Byt namn på kolumner – Vyer kan också användas för att byta namn på kolumnerna utan att påverka bastabellerna förutsatt att antalet kolumner som visas måste matcha antalet kolumner som anges i en select-sats. Således hjälper byta namn till att dölja namnen på kolumnerna i bastabellerna.
  6. Multiple view-anläggning – Olika vyer kan skapas på samma bord för olika användare.

Viktiga tips om SQL-vyer

  • Vyer i SQL är en slags virtuell tabell.
  • Fälten i en vy kan vara från en eller flera tabeller.
  • Vi kan skapa en vy med CREATE VIEW-satsen och ta bort en vy med DROP VIEW-satsen.
  • Vi kan uppdatera en vy med hjälp av CREATE OR REPLACE VIEW-satsen.
  • WITH CHECK OPTION-satsen används för att förhindra att nya rader infogas som inte uppfyller vyns filtreringsvillkor.