En visning i SQL er en gemt SQL-forespørgsel, der fungerer som en virtuel tabel. I modsætning til almindelige tabeller gemmer visninger ikke data selv. I stedet genererer de dynamisk data ved at udføre den SQL-forespørgsel, der er defineret i visningen, hver gang den tilgås.
Det kan hente data fra en eller flere tabeller og præsentere dem i et tilpasset format, så udviklere kan:
- Forenkle komplekse forespørgsler: Indkapsl komplekse sammenføjninger og betingelser i et enkelt objekt.
- Forbedre sikkerheden: Begræns adgangen til bestemte kolonner eller rækker.
- Præsenter data fleksibelt: Give skræddersyede datavisninger til forskellige brugere.
Vi vil bruge disse to SQL-tabeller 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');
Produktion:
S_ID | Navn | Adresse |
|---|---|---|
1 | Hård | Kolkata |
2 | Ashish | Durgapur |
3 | Praksis | Delhi |
4 | Dhanraj | Bihar |
5 | Vædder | 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 | Navn | Mærker | Alder |
|---|---|---|---|
1 | Hård | 90 | 19 |
2 | Suresh | 50 | 20 |
3 | Praksis | 80 | 19 |
4 | Dhanraj | 95 | 21 |
5 | Vædder | 85 | 18 |
OPRET VISNINGER i SQL
Vi kan oprette en visning ved hjælp af CREATE VIEW-sætningen. 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;
Nøgleord:
- view_name : Navn på visningen
- tabelnavn : Navn på tabellen
- tilstand : Betingelse for at vælge rækker
Eksempel 1: Oprettelse af en simpel visning fra en enkelt tabel
Eksempel 1.1: 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;
Brug nedenstående forespørgsel til at hente dataene fra denne visning
SELECT * FROM DetailsView;Produktion:
Navn | Adresse |
|---|---|
Hård | Kolkata |
Ashish | Durgapur |
Praksis | Delhi |
Dhanraj | Bihar |
Eksempel 1.2: Her 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 forespørger på udsigten som
SELECT * FROM StudentNames;
Produktion:
S_ID | Navn |
|---|---|
2 | Ashish |
4 | Dhanraj |
1 | Hård |
3 | Praksis |
5 | Vædder hvor meget vejer kat timpf |
Eksempel 2: Oprettelse af en visning fra flere tabeller
I dette eksempel vil vi oprette en View MarksView, der kombinerer data fra begge tabeller StudentDetails og StudentMarks. For at oprette en visning fra flere tabeller kan vi blot inkludere flere tabeller i VÆLGE erklæring.
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:
Navn | Adresse | Mærker |
|---|---|---|
Hård | Kolkata | 90 |
Praksis | Delhi | 80 |
Dhanraj | Bihar | 95 |
Vædder | Rajasthan | 85 |
Håndtering af visninger: Opdatering og sletning af liste
1. Liste over alle visninger i en database
Vi kan liste alle visningerne i en database ved hjælp af SHOW FULL TABLES-sætningen eller ved at forespørge informationsskematabellerne.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Brug af informationsskema
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. Sletning af en visning
SQL giver os mulighed for at slette en eksisterende visning. Det kan vi slette eller slip View ved hjælp af DROP-sætningen.
Syntaks:
DROP VIEW view_name;Eksempel: I dette eksempel sletter vi View MarksView.
DROP VIEW MarksView;3. Opdatering af en visningsdefinition
Hvis vi ønsker at opdatere de eksisterende data i visningen, skal du bruge OPDATERING erklæring.
streng json java
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Hvis du vil opdatere visningsdefinitionen uden at påvirke dataene, skal du bruge CREATE OR REPLACE VIEW-sætningen. Lad os for eksempel tilføjeAgekolonne tilMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Note: Ikke alle visninger kan opdateres ved hjælp af UPDATE-erklæringen.
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 visningen kan ikke opdateres.
- SELECT-sætningen, som bruges til at oprette visningen, bør ikke indeholde GROUP BY-sætning eller BESTIL EFTER klausul.
- SELECT-sætningen bør ikke have DISTINKT søgeord.
- 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.
Avancerede teknikker med udsigt
1. Opdatering af data gennem visninger
Vi kan bruge CREATE OR REPLACE VIEW-sætningen til at tilføje eller erstatte felter fra en visning. Hvis vi ønsker at opdatere visningen MarksView og tilføje feltet AGE til denne View from StudentMarks Table, kan vi gøre dette ved at:
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 data fra MarksView nu som:
SELECT * FROM MarksView;Produktion:
Navn | Adresse | Mærker | Alder |
|---|---|---|---|
Hård | Kolkata | 90 | 19 |
Praksis | Delhi | 80 | 19 |
Dhanraj | Bihar | 95 | 21 |
Vædder | Rajasthan | 85 | 18 |
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 'oprettelse af visninger fra en enkelt tabel'.
Eksempel:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Hvis vi henter alle data fra DetailsView nu som
SELECT * FROM DetailsView;Produktion:
Navn | Adresse |
|---|---|
Hård | Kolkata |
Ashish | Durgapur |
Praksis | Delhi |
Dhanraj | Bihar |
Suresh | Gurgaon |
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.
Eksempel:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Hvis vi henter alle data fra DetailsView nu som
SELECT * FROM DetailsView;Produktion:
Navn | Adresse |
|---|---|
Hård | Kolkata |
Ashish | Durgapur |
Praksis | Delhi |
Dhanraj | Bihar |
4. MED KONTROLMULIGHED Klausul
WITH CHECK OPTION-sætningen i SQL er en meget nyttig klausul til visninger. Det gælder for en opdatering, der kan opdateres. Den bruges til at forhindre dataændring (ved hjælp af INSERT eller UPDATE), hvis betingelsen i WHERE-sætningen 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. I eksemplet nedenfor opretter 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;
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. Selvom visningen for eksempel kan opdateres, er nedenstående forespørgsel for denne visning ikke gyldig:
INSERT INTO SampleView(S_ID)Opret quiz
VALUES(6);