En visning i SQL er en lagret SQL-spørring som fungerer som en virtuell tabell. I motsetning til vanlige tabeller lagrer ikke visninger data selv. I stedet genererer de dynamisk data ved å utføre SQL-spørringen som er definert i visningen hver gang den åpnes.
Den kan hente data fra én eller flere tabeller og presentere dem i et tilpasset format som lar utviklere:
- Forenkle komplekse søk: Innkapsle komplekse sammenføyninger og betingelser i et enkelt objekt.
- Forbedre sikkerheten: Begrens tilgangen til bestemte kolonner eller rader.
- Presenter data fleksibelt: Gi skreddersydde datavisninger for forskjellige brukere.
Vi vil bruke disse to SQL-tabellene som eksempler.
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');
Produksjon:
S_ID | Navn | Adresse |
|---|---|---|
1 | Barsk | Kolkata |
2 | Ashish | Durgapur |
3 | Øv | Delhi |
4 | Dhanraj | Bihar |
5 | Vær | Rajasthan |
Studentmerker:
-- 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);
Produksjon:
ID | Navn | Merker | Alder |
|---|---|---|---|
1 | Barsk | 90 | 19 |
2 | Suresh | 50 | 20 |
3 | Øv | 80 | 19 |
4 | Dhanraj | 95 | 21 |
5 | Vær | 85 | 18 |
LAG VISNINGER i SQL
Vi kan lage en visning ved å bruke CREATE VIEW-setningen. En visning kan opprettes fra en enkelt tabell eller flere tabeller.
Syntaks:
CREATE VIEW view_name AS
SELECT column1 column2.....
FROM table_name
WHERE condition;
Nøkkelord:
- view_name : Navn på visningen
- tabellnavn : Navn på tabellen
- betingelse : Betingelse for å velge rader
Eksempel 1: Lage en enkel visning fra en enkelt tabell
Eksempel 1.1: I dette eksemplet vil vi lage en visning kalt DetailsView fra tabellen Studentdetaljer.
Spørsmål:
CREATE VIEW DetailsView AS
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;
Bruk spørringen nedenfor for å hente dataene fra denne visningen
SELECT * FROM DetailsView;Produksjon:
Navn | Adresse |
|---|---|
Barsk | Kolkata |
Ashish | Durgapur |
Øv | Delhi |
Dhanraj | Bihar |
Eksempel 1.2: Her vil vi lage en visning kalt Studentnavn fra tabellen Studentdetaljer.
Spørsmål:
CREATE VIEW StudentNames AS
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;
Hvis vi nå spørre visningen som
SELECT * FROM StudentNames;
Produksjon:
S_ID | Navn |
|---|---|
2 | Ashish |
4 | Dhanraj |
1 | Barsk |
3 | Øv |
5 | Vær gimp-fontliste |
Eksempel 2: Opprette en visning fra flere tabeller
I dette eksemplet vil vi lage en View MarksView som kombinerer data fra begge tabellene StudentDetails og StudentMarks. For å lage en visning fra flere tabeller kan vi ganske enkelt inkludere flere tabeller i VELGE uttalelse.
Spørsmål:
CREATE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Slik viser du data for View MarksView:
SELECT * FROM MarksView;Produksjon:
Navn | Adresse | Merker |
|---|---|---|
Barsk | Kolkata | 90 |
Øv | Delhi | 80 |
Dhanraj | Bihar | 95 |
Vær | Rajasthan | 85 |
Administrere visninger: Oppdatering og sletting av oppføringer
1. Liste alle visninger i en database
Vi kan liste alle visningene i en database ved å bruke SHOW FULL TABLES-setningen eller ved å spørre informasjonsskjematabellene.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Bruker informasjonsskjema
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. Slette en visning
SQL lar oss slette en eksisterende visning. Vi kan slette eller slipp View ved å bruke DROP-setningen.
Syntaks:
DROP VIEW view_name;Eksempel: I dette eksemplet sletter vi View MarksView.
DROP VIEW MarksView;3. Oppdatere en visningsdefinisjon
Hvis vi ønsker å oppdatere eksisterende data i visningen, bruk OPPDATERING uttalelse.
streng json java
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Hvis du vil oppdatere visningsdefinisjonen uten å påvirke dataene, bruk CREATE OR REPLACE VIEW-setningen. La oss for eksempel legge tilAgekolonne tilMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Note: Ikke alle visninger kan oppdateres ved hjelp av UPDATE-setningen.
Regler for å oppdatere visninger i SQL:
Visse betingelser må være oppfylt for å oppdatere en visning. Hvis noen av disse forholdene er ikke møtte visningen kan ikke oppdateres.
- SELECT-setningen som brukes til å lage visningen skal ikke inneholde GROUP BY-klausul eller BESTILL PÅ klausul.
- SELECT-setningen skal ikke ha DISTINKT nøkkelord.
- Visningen skal ha alle NOT NULL-verdier.
- Visningen skal ikke opprettes ved hjelp av nestede spørringer eller komplekse spørringer.
- Visningen skal opprettes fra en enkelt tabell. Hvis visningen er opprettet ved hjelp av flere tabeller, har vi ikke lov til å oppdatere visningen.
Avanserte teknikker med utsikt
1. Oppdatere data gjennom visninger
Vi kan bruke CREATE OR REPLACE VIEW-setningen for å legge til eller erstatte felt fra en visning Hvis vi ønsker å oppdatere visningen MarksView og legge til feltet AGE i denne View from StudentMarks-tabellen, kan vi gjøre dette ved å:
Eksempel:
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 dataene fra MarksView nå som:
SELECT * FROM MarksView;Produksjon:
Navn | Adresse | Merker | Alder |
|---|---|---|---|
Barsk | Kolkata | 90 | 19 |
Øv | Delhi | 80 | 19 |
Dhanraj | Bihar | 95 | 21 |
Vær | Rajasthan | 85 | 18 |
Vi kan sette inn en rad i en View på samme måte som vi gjør i en tabell. Vi kan bruke SETTE INN I SQL-setning for å sette inn en rad i en visning. I eksemplet nedenfor vil vi sette inn en ny rad i View DetailsView som vi har opprettet ovenfor i eksemplet med "opprette visninger fra en enkelt tabell".
Eksempel:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Hvis vi henter alle dataene fra DetailsView nå som
SELECT * FROM DetailsView;Produksjon:
Navn | Adresse |
|---|---|
Barsk | Kolkata |
Ashish | Durgapur |
Øv | Delhi |
Dhanraj | Bihar |
Suresh | Gurgaon |
3. Slette en rad fra en visning
Å slette rader fra en visning er også like enkelt som å slette rader fra en tabell. Vi kan bruke DELETE-setningen til SQL for å slette rader fra en visning. Også sletting av en rad fra en visning sletter først raden fra den faktiske tabellen, og endringen reflekteres deretter i visningen. I dette eksemplet vil vi slette den siste raden fra visningen DetailsView som vi nettopp la til i eksemplet ovenfor for å sette inn rader.
Eksempel:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Hvis vi henter alle dataene fra DetailsView nå som
SELECT * FROM DetailsView;Produksjon:
Navn | Adresse |
|---|---|
Barsk | Kolkata |
Ashish | Durgapur |
Øv | Delhi |
Dhanraj | Bihar |
4. MED KONTROLLOPSJON Klausul
WITH CHECK OPTION-klausulen i SQL er en veldig nyttig klausul for visninger. Det gjelder en oppdaterbar visning. Den brukes til å forhindre datamodifisering (ved å bruke INSERT eller UPDATE) hvis betingelsen i WHERE-leddet i CREATE VIEW-setningen ikke er oppfylt.
Hvis vi har brukt WITH CHECK OPTION-leddet i CREATE VIEW-setningen og hvis UPDATE- eller INSERT-leddet ikke tilfredsstiller betingelsene, vil de returnere en feil. I eksemplet nedenfor lager vi en View SampleView fra StudentDetails-tabellen med en WITH CHECK OPTION-klausul.
Eksempel:
CREATE VIEW SampleView AS
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;
Hvis vi i denne visningen nå prøver å sette inn en ny rad med en nullverdi i NAME-kolonnen, vil det gi en feilmelding fordi visningen er opprettet med betingelsen for NAME-kolonnen som NOT NULL. Selv om visningen for eksempel kan oppdateres, er heller ikke spørringen nedenfor for denne visningen gyldig:
INSERT INTO SampleView(S_ID)Lag quiz
VALUES(6);