logo

SQL-visninger

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

Bordelev

StudentMarks

Tabel Elevkarakterer

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:

skabe visningseksempler

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:

se output

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:

se output

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.

  1. SELECT-sætningen, som bruges til at oprette visningen, bør ikke indeholde GROUP BY-sætning eller ORDER BY-sætning.
  2. SELECT-sætningen bør ikke have nøgleordet DISTINCT.
  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.

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:

oprette eller erstatte visningseksempel

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:

indsæt række i visningseksempel

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:

slet række fra visning eksempel

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:

  1. 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.
  2. Skjul datakompleksitet – En visning kan skjule kompleksiteten, der findes i flere sammenføjede tabeller.
  3. 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.
  4. Gem komplekse forespørgsler – Visninger kan bruges til at gemme komplekse forespørgsler.
  5. 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.
  6. 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.