logo

SQL-weergaven

Een weergave in SQL is een opgeslagen SQL-query die fungeert als een virtuele tabel. In tegenstelling tot gewone tabellen slaan weergaven zelf geen gegevens op. In plaats daarvan genereren ze dynamisch gegevens door de SQL-query uit te voeren die in de weergave is gedefinieerd telkens wanneer deze wordt geopend.

Het kan gegevens uit een of meer tabellen ophalen en deze in een aangepast formaat presenteren, waardoor ontwikkelaars het volgende kunnen doen:

  • Vereenvoudig complexe zoekopdrachten: Breng complexe joins en voorwaarden samen in één object.
  • Verbeter de beveiliging: Beperk de toegang tot specifieke kolommen of rijen.
  • Gegevens flexibel presenteren: Bied op maat gemaakte gegevensweergaven voor verschillende gebruikers.

We zullen deze twee SQL-tabellen als voorbeeld gebruiken.



Studentgegevens:

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

Uitgang:

S_ID

Naam

Adres

1

Wreed

Calcutta

2

Ashish

Durgapur

3

Oefening

Delhi

4

Dhanraj

Bihar

5

Ram

Rajasthan

Studentencijfers:

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

Uitgang:

Identiteitskaart

Naam

Merken

Leeftijd

1

Wreed

90

19

2

Zeker

50

20

3

Oefening

80

19

4

Dhanraj

95

21

5

Ram

85

18

MAAK WEERGAVEN in SQL

We kunnen een weergave maken met behulp van de CREATE VIEW-instructie. Een weergave kan worden gemaakt op basis van een enkele tabel of meerdere tabellen.

Syntaxis:

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

Belangrijkste termen:

  • weergavenaam : Naam voor de weergave
  • tabelnaam : Naam van de tafel
  • voorwaarde : voorwaarde om rijen te selecteren

Voorbeeld 1: Een eenvoudige weergave maken vanuit één tabel

Voorbeeld 1.1: In dit voorbeeld maken we een weergave met de naam DetailsView uit de tabel StudentDetails.

Vraag:

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

Gebruik de onderstaande query om de gegevens uit deze weergave op te halen

SELECT * FROM DetailsView;

Uitgang: 

Naam

Adres

Wreed

Calcutta

Ashish

Durgapur

Oefening

Delhi

Dhanraj

Bihar

Voorbeeld 1.2: Hier zullen we een weergave maken met de naam StudentNames uit de tabel StudentDetails.

Vraag:

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

Als we nu de weergave opvragen als

    SELECT    *     FROM    StudentNames;

Uitgang: 

S_ID

Naam

2

Ashish

4

Dhanraj

1

Wreed

3

Oefening

5

Ram

Java-architectuur

Voorbeeld 2: Een weergave maken van meerdere tabellen

In dit voorbeeld maken we een View MarksView die gegevens combineert uit de tabellen StudentDetails en StudentMarks. Om een ​​weergave van meerdere tabellen te maken, kunnen we eenvoudig meerdere tabellen in de SELECTEER stelling.

Vraag:

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

Gegevens van View MarksView weergeven:

SELECT * FROM MarksView;

Uitgang:

Naam

Adres

Merken

Wreed

Calcutta

90

Oefening

Delhi

80

Dhanraj

Bihar

95

Ram

Rajasthan

85

Weergaven beheren: vermeldingen bijwerken en verwijderen

1. Alle weergaven in een database weergeven

We kunnen alle views in een database weergeven met behulp van de SHOW FULL TABLES-instructie of door de information_schema-tabellen te bevragen.

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

Informatie_schema gebruiken

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. Een weergave verwijderen

Met SQL kunnen we een bestaande weergave verwijderen. Wij kunnen verwijderen of laat View vallen met behulp van de DROP-instructie.

Syntaxis:

DROP VIEW view_name;

Voorbeeld: In dit voorbeeld verwijderen we de View MarksView.

DROP VIEW MarksView;

3. Een weergavedefinitie bijwerken

Als we de bestaande gegevens in de weergave willen bijwerken, gebruikt u de  UPDATE  stelling.

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

Als u de weergavedefinitie wilt bijwerken zonder de gegevens te beïnvloeden, gebruikt u de instructie CREATE OR REPLACE VIEW. Laten we bijvoorbeeld deAgekolom naar deMarksView:

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

Opmerking: Niet alle weergaven kunnen worden bijgewerkt met de UPDATE-instructie.

Regels voor het bijwerken van weergaven in SQL:

Er moet aan bepaalde voorwaarden zijn voldaan om een ​​weergave bij te werken. Als een van deze omstandigheden van toepassing is niet voldaan aan de weergave kan niet worden bijgewerkt.

  1. De SELECT-instructie die wordt gebruikt om de weergave te maken, mag geen GROUP BY-clausule of bevatten BESTEL DOOR clausule.
  2. De SELECT-instructie mag niet de VERSCHILLEND trefwoord.
  3. De weergave moet alle NIET NULL-waarden bevatten.
  4. De weergave mag niet worden gemaakt met behulp van geneste of complexe query's.
  5. De weergave moet worden gemaakt op basis van één enkele tabel. Als de weergave is gemaakt met behulp van meerdere tabellen, mogen we de weergave niet bijwerken.

Geavanceerde technieken met weergaven

1. Gegevens bijwerken via weergaven

We kunnen de CREATE OR REPLACE VIEW-instructie gebruiken om velden uit een weergave toe te voegen of te vervangen. Als we de weergave MarksView willen bijwerken en het veld AGE aan deze weergave willen toevoegen vanuit StudentMarks Table, kunnen we dit doen door:

Voorbeeld:

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

Als we nu alle gegevens uit MarksView ophalen als:

SELECT * FROM MarksView;

Uitgang:

Naam

Adres

Merken

Leeftijd

Wreed

Calcutta

90

19

Oefening

Delhi

80

19

Dhanraj

Bihar

95

21

Ram

Rajasthan

85

18

We kunnen een rij in een View invoegen op dezelfde manier als in een tabel. Wij kunnen gebruik maken van de INVOEREN -instructie van SQL om een ​​rij in een weergave in te voegen. In het onderstaande voorbeeld zullen we een nieuwe rij invoegen in de View DetailsView die we hierboven hebben gemaakt in het voorbeeld van 'weergaven maken vanuit een enkele tabel'.

Voorbeeld:

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

Als we nu alle gegevens uit DetailsView ophalen als

SELECT * FROM DetailsView;

Uitgang:

Naam

Adres

Wreed

Calcutta

Ashish

Durgapur

Oefening

Delhi

Dhanraj

Bihar

Zeker

Gurgaon

3. Een rij uit een weergave verwijderen

Het verwijderen van rijen uit een weergave is net zo eenvoudig als het verwijderen van rijen uit een tabel. We kunnen de DELETE-instructie van SQL gebruiken om rijen uit een weergave te verwijderen. Als u een rij uit een weergave verwijdert, wordt ook eerst de rij uit de daadwerkelijke tabel verwijderd, waarna de wijziging in de weergave wordt weerspiegeld. In dit voorbeeld verwijderen we de laatste rij uit de weergave DetailsView die we zojuist hebben toegevoegd in het bovenstaande voorbeeld van het invoegen van rijen.

Voorbeeld:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Als we nu alle gegevens uit DetailsView ophalen als

SELECT * FROM DetailsView;

Uitgang: 

Naam

Adres

Wreed

Calcutta

Ashish

Durgapur

Oefening

Delhi

Dhanraj

Bihar

4. MET CHECK-OPTIE-clausule

De clausule WITH CHECK OPTION in SQL is een zeer nuttige clausule voor views. Het is van toepassing op een weergave die kan worden bijgewerkt. Het wordt gebruikt om gegevenswijziging te voorkomen (met behulp van INSERT of UPDATE) als niet aan de voorwaarde in de WHERE-clausule in de CREATE VIEW-instructie wordt voldaan.

Als we de clausule WITH CHECK OPTION in de instructie CREATE VIEW hebben gebruikt en als de clausule UPDATE of INSERT niet aan de voorwaarden voldoet, wordt er een fout geretourneerd. In het onderstaande voorbeeld maken we een View SampleView uit de StudentDetails-tabel met een WITH CHECK OPTION-clausule.

Voorbeeld:

hoe groot is mijn beeldscherm
CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

Als we in deze weergave nu proberen een nieuwe rij met een nulwaarde in de kolom NAME in te voegen, geeft dit een foutmelding omdat de weergave is gemaakt met de voorwaarde voor de kolom NAME als NOT NULL. Hoewel de weergave bijvoorbeeld kan worden bijgewerkt, is ook de onderstaande zoekopdracht voor deze weergave niet geldig:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Quiz maken