logo

SQL Views

Zobrazenia v SQL sú akýmsi virtuálnym stolom. Zobrazenie má tiež riadky a stĺpce ako tabuľky, ale zobrazenie neukladá údaje na disk ako tabuľka. Zobrazenie definuje prispôsobený dotaz, ktorý získava údaje z jednej alebo viacerých tabuliek a predstavuje údaje, ako keby pochádzali z jedného zdroja.

Pohľad môžeme vytvoriť výberom polí z jednej alebo viacerých tabuliek prítomných v databáze. Zobrazenie môže mať buď všetky riadky tabuľky alebo špecifické riadky na základe určitých podmienok.

V tomto článku sa dozvieme o vytváraní, aktualizácii a odstraňovaní zobrazení v SQL.



D emo SQL databáza

Tieto budeme používať dve SQL tabuľky pre príklady.

Podrobnosti o študentovi

Tabuľka Študent

ŠtudentMarks

Tabuľka Žiacke známky

Tieto tabuľky môžete vo svojom systéme vytvoriť napísaním nasledujúceho dotazu SQL:

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);>

VYTVORTE ZOBRAZENIA v SQL

Pohľad môžeme vytvoriť pomocou VYTVORIŤ ZOBRAZENIE vyhlásenie. Pohľad možno vytvoriť z jednej tabuľky alebo viacerých tabuliek.

Syntax

  CREATE VIEW   view_name AS   SELECT   column1, column2.....   FROM   table_name   WHERE   condition;>

Parametre:

  • view_name : Názov zobrazenia
  • názov_tabuľky : Názov tabuľky
  • stave : Podmienka výberu riadkov

Príklady príkazov SQL CREATE VIEW

Pozrime sa na niekoľko príkladov príkazu CREATE VIEW v SQL, aby sme lepšie pochopili, ako vytvárať zobrazenia v SQL.

Príklad 1: Vytvorenie zobrazenia z jednej tabuľky

V tomto príklade vytvoríme pohľad s názvom DetailsView z tabuľky StudentDetails. Dopyt:

  CREATE VIEW   DetailsView   AS    SELECT   NAME, ADDRESS   FROM   StudentDetails   WHERE   S_ID <5;>

Ak chcete zobraziť údaje v zobrazení, môžeme dopytovať zobrazenie rovnakým spôsobom, ako dopytujeme tabuľku.

  SELECT   *   FROM   DetailsView;>

Výkon:

vytvoriť príklady zobrazenia

Príklad 2: Vytvorenie pohľadu z tabuľky

V tomto príklade vytvoríme pohľad s názvom StudentNames z tabuľky StudentDetails. Dopyt:

  CREATE VIEW   StudentNames   AS    SELECT   S_ID, NAME   FROM   StudentDetails   ORDER BY   NAME;>

Ak sa teraz pýtame na pohľad ako,

  SELECT   *   FROM   StudentNames;>

Výkon:

zobraziť výstup

Príklad 3: Vytvorenie zobrazenia z viacerých tabuliek

V tomto príklade vytvoríme pohľad s názvom MarksView z dvoch tabuliek StudentDetails a StudentMarks. Na vytvorenie zobrazenia z viacerých tabuliek môžeme jednoducho zahrnúť viacero tabuliek do príkazu SELECT. Dopyt:

  CREATE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

Ak chcete zobraziť údaje View MarksView:

  SELECT   *   FROM   MarksView;>

Výkon:

zobraziť výstup

ZOZNAM VŠETKÝCH ZOBRAZENÍ V DATABÁZE

Môžeme zobraziť zoznam pomocou ZOBRAZIŤ CELÉ TABUĽKY vyhlásenie alebo pomocou tabuľka information_schema . Pohľad možno vytvoriť z jednej tabuľky alebo viacerých tabuliek.

Syntax

  USE   'database_name';   SHOW FULL   TABLES   WHERE   table_type LIKE '%VIEW';>

Pomocou information_schema

konverzia nfa na dfa
  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';>

DELETE VIEWS in SQL

SQL nám umožňuje odstrániť existujúci pohľad. Zobrazenie môžeme vymazať alebo zrušiť pomocou príkaz DROP .

Syntax

  DROP VIEW   view_name;>

Príklad

V tomto príklade odstraňujeme zobrazenie MarksView.

  DROP VIEW   MarksView;>

AKTUALIZOVAŤ ZOBRAZENIE v SQL

Ak chcete aktualizovať existujúce údaje v zobrazení, použite AKTUALIZOVAŤ vyhlásenie.

Syntax

  UPDATE   view_name   SET   column1 = value1, column2 = value2...., columnN = valueN   WHERE   [condition];>

Poznámka: Nie všetky zobrazenia je možné aktualizovať pomocou príkazu UPDATE.

Ak chcete aktualizovať definíciu zobrazenia bez ovplyvnenia údajov, použite VYTVORIŤ ALEBO NAHRADIŤ ZOBRAZENIE vyhlásenie. môžete použiť túto syntax

  CREATE OR REPLACE   VIEW view_name   AS    SELECT   column1, column2, ...   FROM   table_name   WHERE   condition;>

Pravidlá na aktualizáciu zobrazení v SQL:

Na aktualizáciu zobrazenia je potrebné splniť určité podmienky. Ak je niektorá z týchto podmienok nie splnené, pohľad sa nedá aktualizovať.

  1. Príkaz SELECT, ktorý sa používa na vytvorenie zobrazenia, by nemal obsahovať klauzulu GROUP BY alebo klauzulu ORDER BY.
  2. Príkaz SELECT by nemal obsahovať kľúčové slovo DISTINCT.
  3. Zobrazenie by malo mať všetky hodnoty NOT NULL.
  4. Zobrazenie by sa nemalo vytvárať pomocou vnorených dopytov alebo zložitých dopytov.
  5. Pohľad by mal byť vytvorený z jednej tabuľky. Ak je zobrazenie vytvorené pomocou viacerých tabuliek, nebudeme môcť zobrazenie aktualizovať.

Príklady

Pozrime sa na rôzne prípady použitia na aktualizáciu zobrazenia v SQL. Pre lepšie pochopenie tieto prípady použitia pokryjeme príkladmi.

Príklad 1: Aktualizujte zobrazenie na pridanie alebo nahradenie poľa zobrazenia

Môžeme použiť VYTVORIŤ ALEBO NAHRADIŤ ZOBRAZENIE príkaz na pridanie alebo nahradenie polí zo zobrazenia.

Ak chceme aktualizovať pohľad MarksView a pridajte pole AGE k tomuto pohľadu z ŠtudentMarks Tabuľka, môžeme to urobiť takto:

  CREATE OR REPLACE VIEW   MarksView AS   SELECT   StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE   FROM   StudentDetails, StudentMarks   WHERE   StudentDetails.NAME = StudentMarks.NAME;>

Ak teraz načítame všetky údaje z MarksView ako:

  SELECT   *   FROM   MarksView;>

Výkon:

vytvoriť alebo nahradiť príklad zobrazenia

Príklad 2: Aktualizujte zobrazenie na vloženie riadka do zobrazenia

Do zobrazenia môžeme vložiť riadok rovnakým spôsobom ako do tabuľky. Môžeme použiť VLOŽIŤ DO príkaz SQL na vloženie riadku do zobrazenia.

V nižšie uvedenom príklade vložíme nový riadok do View DetailsView, ktorý sme vytvorili vyššie v príklade vytvárania pohľadov z jednej tabuľky.

  INSERT INTO   DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>

Ak teraz načítame všetky údaje z DetailsView,

  SELECT   *   FROM   DetailsView;>

Výkon:

vložiť riadok v príklade zobrazenia

Príklad 3: Odstránenie riadku zo zobrazenia

Odstránenie riadkov zo zobrazenia je tiež také jednoduché ako odstránenie riadkov z tabuľky. Na odstránenie riadkov zo zobrazenia môžeme použiť príkaz DELETE jazyka SQL. Odstránením riadka zo zobrazenia sa tiež najprv odstráni riadok zo skutočnej tabuľky a zmena sa potom prejaví v zobrazení.

V tomto príklade vymažeme posledný riadok zo zobrazenia DetailsView, ktorý sme práve pridali vo vyššie uvedenom príklade vkladania riadkov.

  DELETE FROM   DetailsView   WHERE   NAME='Suresh';>

Ak teraz načítame všetky údaje z DetailsView,

  SELECT   *   FROM   DetailsView;>

Výkon:

entitný vzťahový

odstrániť riadok z príkladu zobrazenia

S doložkou CHECK OPTION

The S MOŽNOSŤOU KONTROLY klauzula v SQL je veľmi užitočná klauzula pre pohľady. Vzťahuje sa na aktualizované zobrazenie.

Klauzula WITH CHECK OPTION sa používa na zabránenie modifikácii údajov (pomocou INSERT alebo UPDATE), ak nie je splnená podmienka v klauzule WHERE v príkaze CREATE VIEW.

Ak sme v príkaze CREATE VIEW použili klauzulu WITH CHECK OPTION a ak klauzula UPDATE alebo INSERT nespĺňa podmienky, vrátia chybu.

Príklad doložky WITH CHECK OPTION:

V nižšie uvedenom príklade vytvárame View SampleView z tabuľky StudentDetails s klauzulou WITH CHECK OPTION.

  CREATE VIEW   SampleView AS   SELECT   S_ID, NAME   FROM   StudentDetails   WHERE   NAME IS NOT NULL   WITH CHECK OPTION  ;>

Ak sa v tomto zobrazení teraz pokúsime vložiť nový riadok s hodnotou null do stĺpca NAME, zobrazí sa chyba, pretože zobrazenie je vytvorené s podmienkou pre stĺpec NAME ako NOT NULL. Napríklad, aj keď je zobrazenie aktualizovať, nie je platný ani nasledujúci dotaz pre toto zobrazenie:

  INSERT INTO   SampleView(S_ID)   VALUES  (6);>

POZNÁMKA : Predvolená hodnota stĺpca NAME je nulový .

Použitie zobrazenia

Dobrá databáza by mala obsahovať pohľady z uvedených dôvodov:

  1. Obmedzenie prístupu k údajom – Zobrazenia poskytujú ďalšiu úroveň zabezpečenia tabuľky obmedzením prístupu k vopred určenej množine riadkov a stĺpcov tabuľky.
  2. Skrytie zložitosti údajov – Pohľad môže skryť zložitosť, ktorá existuje vo viacerých spojených tabuľkách.
  3. Zjednodušte príkazy pre používateľa – Zobrazenia umožňujú používateľovi vybrať informácie z viacerých tabuliek bez toho, aby museli používatelia skutočne vedieť, ako vykonať spojenie.
  4. Ukladať zložité otázky – Zobrazenia možno použiť na ukladanie zložitých dopytov.
  5. Premenovať stĺpce – Zobrazenia možno použiť aj na premenovanie stĺpcov bez ovplyvnenia základných tabuliek za predpokladu, že počet stĺpcov v zobrazení sa musí zhodovať s počtom stĺpcov zadaným v príkaze select. Premenovanie teda pomáha skryť názvy stĺpcov základných tabuliek.
  6. Možnosť viacnásobného zobrazenia – Na tej istej tabuľke môžu byť vytvorené rôzne zobrazenia pre rôznych používateľov.

Kľúčové poznatky o SQL zobrazeniach

  • Zobrazenia v SQL sú akousi virtuálnou tabuľkou.
  • Polia v zobrazení môžu byť z jednej alebo viacerých tabuliek.
  • Pohľad môžeme vytvoriť pomocou príkazu CREATE VIEW a pohľad odstrániť pomocou príkazu DROP VIEW.
  • Pohľad môžeme aktualizovať pomocou príkazu CREATE OR REPLACE VIEW.
  • Klauzula WITH CHECK OPTION sa používa na zabránenie vkladania nových riadkov, ktoré nespĺňajú podmienku filtrovania zobrazenia.