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.
- De SELECT-instructie die wordt gebruikt om de weergave te maken, mag geen GROUP BY-clausule of bevatten BESTEL DOOR clausule.
- De SELECT-instructie mag niet de VERSCHILLEND trefwoord.
- De weergave moet alle NIET NULL-waarden bevatten.
- De weergave mag niet worden gemaakt met behulp van geneste of complexe query's.
- 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)Quiz maken
VALUES(6);