logo

SQL-vyer

En vy i SQL är en sparad SQL-fråga som fungerar som en virtuell tabell. Till skillnad från vanliga tabeller lagrar vyer inte data själva. Istället genererar de dynamiskt data genom att exekvera SQL-frågan som definieras i vyn varje gång den används.

Den kan hämta data från en eller flera tabeller och presentera den i ett anpassat format som tillåter utvecklare att:

  • Förenkla komplexa frågor: Kapsla in komplexa kopplingar och villkor i ett enda objekt.
  • Förbättra säkerheten: Begränsa åtkomsten till specifika kolumner eller rader.
  • Presentera data flexibelt: Ge skräddarsydda datavyer för olika användare.

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



Studentdetaljer:

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

Produktion:

S_ID

Namn

Adress

1

Hård

Kolkata

2

Ashish

Durgapur

3

Öva

Delhi

4

Dhanraj

Bihar

5

Ram

Rajasthan

StudentMarks:

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

Produktion:

ID

Namn

Märken

Åldras

1

Hård

90

19

2

Suresh

50

20

3

Öva

80

19

4

Dhanraj

95

21

5

Ram

85

18

SKAPA VISNINGAR i SQL

Vi kan skapa en vy med CREATE VIEW-satsen. 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;

Nyckelord:

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

Exempel 1: Skapa en enkel vy från en enskild tabell

Exempel 1.1: I det här exemplet kommer vi att skapa en vy som heter DetailsView från tabellen Studentdetaljer.

Fråga:

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

Använd frågan nedan för att hämta data från denna vy

SELECT * FROM DetailsView;

Produktion: 

Namn

Adress

Hård

Kolkata

Ashish

Durgapur

Öva

Delhi

Dhanraj

Bihar

Exempel 1.2: Här 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: 

S_ID

Namn

2

Ashish

4

Dhanraj

1

Hård

3

Öva

5

Ram

Hur man laddar ner youtube video vlc

Exempel 2: Skapa en vy från flera tabeller

I det här exemplet kommer vi att skapa en View MarksView som kombinerar data från båda tabellerna StudentDetails och StudentMarks. För att skapa en vy från flera tabeller kan vi helt enkelt inkludera flera tabeller i VÄLJA påstående.

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:

Namn

Adress

Märken

Hård

Kolkata

90

Öva

Delhi

80

Dhanraj

Bihar

95

Ram

Rajasthan

85

Hantera vyer: Uppdatera och ta bort listor

1. Lista alla vyer i en databas

Vi kan lista alla vyer i en databas med hjälp av SHOW FULL TABLES-satsen eller genom att fråga informationsschema-tabellerna.

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

Använder informationsschema

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

2. Ta bort en vy

SQL tillåter oss att ta bort en befintlig vy. Vi kan radera eller släpp View med DROP-satsen.

Syntax:

DROP VIEW view_name;

Exempel: I det här exemplet tar vi bort View MarksView.

DROP VIEW MarksView;

3. Uppdatera en vydefinition

Om vi ​​vill uppdatera befintliga data i vyn, använd  UPPDATERA  påstående.

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

Om du vill uppdatera vydefinitionen utan att påverka data, använd CREATE OR REPLACE VIEW-satsen. Låt oss till exempel lägga tillAgekolumn tillMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

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

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 träffade vyn kan inte uppdateras.

  1. SELECT-satsen som används för att skapa vyn bör inte innehålla GROUP BY-sats eller BESTÄLL AV klausul.
  2. SELECT-satsen ska inte ha DISTINKT nyckelord.
  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.

Avancerade tekniker med vyer

1. Uppdatera data genom vyer

Vi kan använda CREATE OR REPLACE VIEW-satsen för att lägga till eller ersätta fält från en vy. Om vi ​​vill uppdatera vyn MarksView och lägga till fältet AGE i denna View from StudentMarks Table kan vi göra detta genom att:

Exempel:

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:

Namn

Adress

Märken

Åldras

Hård

Kolkata

90

19

Öva

Delhi

80

19

Dhanraj

Bihar

95

21

Ram

Rajasthan

85

18

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 "skapa vyer från en enda tabell".

Exempel:

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

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

SELECT * FROM DetailsView;

Produktion:

Namn

Adress

Hård

Kolkata

Ashish

samling java

Durgapur

Öva

Delhi

Dhanraj

Bihar

Suresh

Gurgaon

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.

Exempel:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

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

SELECT * FROM DetailsView;

Produktion: 

Namn

Adress

Hård

Kolkata

Ashish

Durgapur

Öva

Delhi

Dhanraj

Bihar

4. MED KONTROLLOPTION Klausul

WITH CHECK OPTION-satsen i SQL är en mycket användbar sats för vyer. Det gäller en uppdateringsbar vy. Den 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. I exemplet nedan skapar vi en View SampleView från StudentDetails-tabellen med en WITH CHECK OPTION-sats.

Exempel:

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

Om vi ​​i denna vy 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);
Skapa frågesport