logo

SQL-visninger

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.

  1. SELECT-sætningen, som bruges til at oprette visningen, bør ikke indeholde GROUP BY-sætning eller BESTIL EFTER klausul.
  2. SELECT-sætningen bør ikke have DISTINKT søgeord.
  3. Visningen skal have alle NOT NULL-værdier.
  4. Visningen bør ikke oprettes ved hjælp af indlejrede forespørgsler eller komplekse forespørgsler.
  5. 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)  
VALUES(6);
Opret quiz