logo

SQL-visninger

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.

  1. SELECT-setningen som brukes til å lage visningen skal ikke inneholde GROUP BY-klausul eller BESTILL PÅ klausul.
  2. SELECT-setningen skal ikke ha DISTINKT nøkkelord.
  3. Visningen skal ha alle NOT NULL-verdier.
  4. Visningen skal ikke opprettes ved hjelp av nestede spørringer eller komplekse spørringer.
  5. 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)  
VALUES(6);
Lag quiz