Visninger i SQL er en slags virtuel tabel. En visning har også rækker og kolonner som tabeller, men en visning gemmer ikke data på disken som en tabel. View definerer en tilpasset forespørgsel, der henter data fra en eller flere tabeller og repræsenterer dataene, som om de kom fra en enkelt kilde.
Vi kan oprette en visning ved at vælge felter fra en eller flere tabeller i databasen. En visning kan enten have alle rækkerne i en tabel eller specifikke rækker baseret på visse betingelser.
I denne artikel lærer vi om oprettelse, opdatering og sletning af visninger i SQL.
D emo SQL-database
Vi vil bruge disse to SQL-tabeller for eksempler.
Studentdetaljer

StudentMarks

Du kan oprette disse tabeller på dit system ved at skrive følgende SQL-forespørgsel:
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);>
OPRET VISNINGER i SQL
Vi kan skabe en visning vha OPRET UDSIGT udmelding. En visning kan oprettes fra en enkelt tabel eller flere tabeller.
Syntaks
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE condition;>
Parametre:
- view_name : Navn på visningen
- tabelnavn : Navn på tabellen
- tilstand : Betingelse for at vælge rækker
Eksempler på SQL CREATE VIEW-udsagn
Lad os se på nogle eksempler på CREATE VIEW-sætning i SQL for at få en bedre forståelse af, hvordan man opretter visninger i SQL.
Eksempel 1: Oprettelse af visning fra en enkelt tabel
I dette eksempel vil vi oprette en visning med navnet DetailsView fra tabellen StudentDetails. Forespørgsel:
CREATE VIEW DetailsView AS SELECT NAME, ADDRESS FROM StudentDetails WHERE S_ID <5;>
For at se dataene i visningen kan vi forespørge i visningen på samme måde, som vi forespørger i en tabel.
SELECT * FROM DetailsView;>
Produktion:

Eksempel 2: Opret visning fra tabel
I dette eksempel vil vi oprette en visning med navnet StudentNames fra tabellen StudentDetails. Forespørgsel:
CREATE VIEW StudentNames AS SELECT S_ID, NAME FROM StudentDetails ORDER BY NAME;>
Hvis vi nu stiller spørgsmålstegn ved visningen som,
SELECT * FROM StudentNames;>
Produktion:

Eksempel 3: Oprettelse af visning fra flere tabeller
I dette eksempel vil vi oprette en visning ved navn MarksView fra to tabeller StudentDetails og StudentMarks. For at oprette en visning fra flere tabeller kan vi blot inkludere flere tabeller i SELECT-sætningen. Forespørgsel:
CREATE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Sådan får du vist data for View MarksView:
SELECT * FROM MarksView;>
Produktion:

LISTER ALLE VISNINGER I EN DATABASE
Vi kan liste Vis ved hjælp af VIS FULDE TABELLER erklæring eller ved hjælp af informationsskematabel . En visning kan oprettes fra en enkelt tabel eller flere tabeller.
Syntaks
USE 'database_name'; SHOW FULL TABLES WHERE table_type LIKE '%VIEW';>
Brug af informationsskema
hvor meget vejer kat timpf
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';>
SLET VISNINGER i SQL
SQL giver os mulighed for at slette en eksisterende visning. Vi kan slette eller droppe View ved hjælp af DROP-erklæring .
Syntaks
DROP VIEW view_name;>
Eksempel
I dette eksempel sletter vi visningen MarksView.
DROP VIEW MarksView;>
OPDATERING VISNING i SQL
Hvis du vil opdatere de eksisterende data i visningen, skal du bruge OPDATERING udmelding.
Syntaks
UPDATE view_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];>
Bemærk: Ikke alle visninger kan opdateres ved hjælp af UPDATE-erklæringen.
Hvis du vil opdatere visningsdefinitionen uden at påvirke dataene, skal du bruge OPRET ELLER ERSTAT VISNING udmelding. du kan bruge denne syntaks
CREATE OR REPLACE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;>
Regler for opdatering af visninger i SQL:
Visse betingelser skal være opfyldt for at opdatere en visning. Hvis nogen af disse betingelser er ikke opfyldt, kan visningen ikke opdateres.
- SELECT-sætningen, som bruges til at oprette visningen, bør ikke indeholde GROUP BY-sætning eller ORDER BY-sætning.
- SELECT-sætningen bør ikke have nøgleordet DISTINCT.
- Visningen skal have alle NOT NULL-værdier.
- Visningen bør ikke oprettes ved hjælp af indlejrede forespørgsler eller komplekse forespørgsler.
- Visningen skal oprettes fra en enkelt tabel. Hvis visningen er oprettet ved hjælp af flere tabeller, får vi ikke lov til at opdatere visningen.
Eksempler
Lad os se på forskellige use cases til opdatering af en visning i SQL. Vi vil dække disse use cases med eksempler for at få en bedre forståelse.
Eksempel 1: Opdater visning for at tilføje eller erstatte et visningsfelt
Vi kan bruge OPRET ELLER ERSTAT VISNING sætning for at tilføje eller erstatte felter fra en visning.
Hvis vi ønsker at opdatere visningen MarksView og tilføj feltet AGE til denne View from StudentMarks tabel, kan vi gøre dette ved at:
CREATE OR REPLACE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Hvis vi henter alle data fra MarksView nu som:
SELECT * FROM MarksView;>
Produktion:

Eksempel 2: Opdater visning for at indsætte en række i en visning
Vi kan indsætte en række i en View på samme måde, som vi gør i en tabel. Vi kan bruge INDSÆT I SQL-sætning for at indsætte en række i en visning.
I eksemplet nedenfor vil vi indsætte en ny række i View DetailsView, som vi har oprettet ovenfor i eksemplet med at oprette visninger fra en enkelt tabel.
INSERT INTO DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>Hvis vi henter alle data fra DetailsView nu som,
SELECT * FROM DetailsView;>
Produktion:

Eksempel 3: Sletning af en række fra en visning
Sletning af rækker fra en visning er også lige så simpelt som at slette rækker fra en tabel. Vi kan bruge DELETE-sætningen i SQL til at slette rækker fra en visning. Også sletning af en række fra en visning sletter først rækken fra den faktiske tabel, og ændringen afspejles derefter i visningen.
I dette eksempel vil vi slette den sidste række fra visningen DetailsView, som vi lige har tilføjet i ovenstående eksempel på indsættelse af rækker.
DELETE FROM DetailsView WHERE NAME='Suresh';>
Hvis vi henter alle data fra DetailsView nu som,
SELECT * FROM DetailsView;>
Produktion:

MED KONTROLMULIGHED Klausul
Det MED KONTROLMULIGHED klausul i SQL er en meget nyttig klausul til visninger. Det gælder for en opdatering, der kan opdateres.
WITH CHECK OPTION-udtrykket bruges til at forhindre dataændring (ved hjælp af INSERT eller UPDATE), hvis betingelsen i WHERE-udtrykket i CREATE VIEW-sætningen ikke er opfyldt.
Hvis vi har brugt WITH CHECK OPTION-sætningen i CREATE VIEW-sætningen, og hvis UPDATE- eller INSERT-sætningen ikke opfylder betingelserne, vil de returnere en fejl.
streng json java
MED KONTROLMULIGHED Klausuleksempel:
I eksemplet nedenfor opretter vi en View SampleView fra StudentDetails-tabellen med en WITH CHECK OPTION-klausul.
CREATE VIEW SampleView AS SELECT S_ID, NAME FROM StudentDetails WHERE NAME IS NOT NULL WITH CHECK OPTION ;>
I denne visning, hvis vi nu forsøger at indsætte en ny række med en null-værdi i NAME-kolonnen, vil det give en fejl, fordi visningen er oprettet med betingelsen for NAME-kolonnen som NOT NULL. For eksempel, selvom visningen kan opdateres, er nedenstående forespørgsel for denne visning ikke gyldig:
INSERT INTO SampleView(S_ID) VALUES (6);>
BEMÆRK : Standardværdien for kolonnen NAME er nul .
Anvendelser af en udsigt
En god database bør indeholde visninger af de givne grunde:
- Begrænsning af dataadgang – Visninger giver et ekstra niveau af tabelsikkerhed ved at begrænse adgangen til et forudbestemt sæt rækker og kolonner i en tabel.
- Skjul datakompleksitet – En visning kan skjule kompleksiteten, der findes i flere sammenføjede tabeller.
- Forenkle kommandoer for brugeren – Visninger giver brugeren mulighed for at vælge information fra flere tabeller uden at kræve, at brugerne faktisk ved, hvordan de udfører en joinforbindelse.
- Gem komplekse forespørgsler – Visninger kan bruges til at gemme komplekse forespørgsler.
- Omdøb kolonner – Visninger kan også bruges til at omdøbe kolonnerne uden at påvirke basistabellerne, forudsat at antallet af kolonner, der vises, skal svare til antallet af kolonner, der er angivet i en select-sætning. Omdøbning hjælper således med at skjule navnene på kolonnerne i basistabellerne.
- Multiple view facilitet – Forskellige visninger kan oprettes på den samme tabel for forskellige brugere.
Vigtige ting om SQL-visninger
- Visninger i SQL er en slags virtuel tabel.
- Felterne i en visning kan være fra en eller flere tabeller.
- Vi kan oprette en visning ved hjælp af CREATE VIEW-sætningen og slette en visning ved hjælp af DROP VIEW-sætningen.
- Vi kan opdatere en visning ved hjælp af CREATE OR REPLACE VIEW-sætningen.
- WITH CHECK OPTION-klausulen bruges til at forhindre indsættelse af nye rækker, der ikke opfylder visningens filtreringsbetingelser.