logo

SQL pohledy

Zobrazení v SQL jsou jakýmsi virtuálním stolem. Pohled má také řádky a sloupce jako tabulky, ale pohled neukládá data na disk jako tabulka. Zobrazení definuje přizpůsobený dotaz, který načítá data z jedné nebo více tabulek a představuje data, jako by pocházela z jednoho zdroje.

Pohled můžeme vytvořit výběrem polí z jedné nebo více tabulek přítomných v databázi. Zobrazení může mít buď všechny řádky tabulky, nebo konkrétní řádky na základě určitých podmínek.

V tomto článku se naučíme vytvářet, aktualizovat a mazat pohledy v SQL.



D emo SQL databáze

Tyto budeme používat dvě SQL tabulky například.

Podrobnosti o studentovi

Stolní student

StudentMarks

Tabulka Studentské známky

Tyto tabulky můžete ve svém systému vytvořit zadáním následujícího SQL dotazu:

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

VYTVOŘTE POHLEDY v SQL

Můžeme vytvořit pohled pomocí VYTVOŘIT ZOBRAZENÍ prohlášení. Pohled lze vytvořit z jedné tabulky nebo z více tabulek.

Syntax

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

Parametry:

  • název_zobrazení : Název pro zobrazení
  • název_tabulky : Název tabulky
  • stav : Podmínka výběru řádků

Příklady příkazů SQL CREATE VIEW

Podívejme se na některé příklady příkazu CREATE VIEW v SQL, abychom lépe porozuměli tomu, jak vytvářet pohledy v SQL.

Příklad 1: Vytvoření pohledu z jedné tabulky

V tomto příkladu vytvoříme pohled s názvem DetailsView z tabulky StudentDetails. Dotaz:

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

Chcete-li zobrazit data v pohledu, můžeme dotazovat pohled stejným způsobem, jako dotazujeme tabulku.

  SELECT   *   FROM   DetailsView;>

Výstup:

vytvořit příklady zobrazení

Příklad 2: Vytvoření pohledu z tabulky

V tomto příkladu vytvoříme pohled s názvem StudentNames z tabulky StudentDetails. Dotaz:

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

Pokud se nyní dotazujeme na pohled jako,

  SELECT   *   FROM   StudentNames;  >

Výstup:

zobrazit výstup

Příklad 3: Vytvoření pohledu z více tabulek

V tomto příkladu vytvoříme pohled s názvem MarksView ze dvou tabulek StudentDetails a StudentMarks. Chcete-li vytvořit pohled z více tabulek, můžeme jednoduše zahrnout více tabulek do příkazu SELECT. Dotaz:

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

Chcete-li zobrazit data View MarksView:

  SELECT   *   FROM   MarksView;  >

Výstup:

zobrazit výstup

VÝPIS VŠECH POHLEDŮ V DATABÁZI

Můžeme zobrazit seznam pomocí ZOBRAZIT CELÉ TABULKY prohlášení nebo pomocí tabulka information_schema . Pohled lze vytvořit z jedné tabulky nebo z více tabulek.

Syntax

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

Použití information_schema

java int jako řetězec
  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 v SQL

SQL nám umožňuje odstranit existující pohled. Můžeme smazat nebo vypustit View pomocí příkaz DROP .

Syntax

  DROP VIEW   view_name;>

Příklad

V tomto příkladu odstraňujeme pohled MarksView.

  DROP VIEW   MarksView;>

AKTUALIZOVAT ZOBRAZENÍ v SQL

Pokud chcete aktualizovat existující data v rámci zobrazení, použijte AKTUALIZACE prohlášení.

Syntax

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

Poznámka: Ne všechny pohledy lze aktualizovat pomocí příkazu UPDATE.

Pokud chcete aktualizovat definici pohledu bez ovlivnění dat, použijte VYTVOŘIT NEBO NAHRADIT ZOBRAZENÍ prohlášení. můžete použít tuto syntaxi

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

Pravidla pro aktualizaci pohledů v SQL:

Pro aktualizaci pohledu je třeba splnit určité podmínky. Pokud je některá z těchto podmínek ne splněno, pohled nelze aktualizovat.

  1. Příkaz SELECT, který se používá k vytvoření pohledu, by neměl obsahovat klauzuli GROUP BY nebo klauzuli ORDER BY.
  2. Příkaz SELECT by neměl mít klíčové slovo DISTINCT.
  3. Zobrazení by mělo mít všechny hodnoty NOT NULL.
  4. Pohled by neměl být vytvořen pomocí vnořených dotazů nebo složitých dotazů.
  5. Pohled by měl být vytvořen z jedné tabulky. Pokud je pohled vytvořen pomocí více tabulek, nebudeme moci pohled aktualizovat.

Příklady

Podívejme se na různé případy použití pro aktualizaci pohledu v SQL. Tyto případy použití pokryjeme příklady pro lepší pochopení.

Příklad 1: Aktualizujte zobrazení a přidejte nebo nahraďte pole zobrazení

Můžeme použít VYTVOŘIT NEBO NAHRADIT ZOBRAZENÍ příkaz k přidání nebo nahrazení polí z pohledu.

Pokud chceme aktualizovat pohled MarksView a přidejte pole AGE k tomuto pohledu z StudentMarks Tabulka, můžeme to udělat takto:

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

Pokud nyní načteme všechna data z MarksView jako:

  SELECT   *   FROM   MarksView;>

Výstup:

příklad vytvoření nebo nahrazení pohledu

Příklad 2: Aktualizujte pohled na Vložení řádku do pohledu

Řádek do Pohledu můžeme vložit stejným způsobem jako do tabulky. Můžeme použít VLOŽ DO příkaz SQL pro vložení řádku do pohledu.

V níže uvedeném příkladu vložíme nový řádek do View DetailsView, který jsme vytvořili výše v příkladu vytváření pohledů z jedné tabulky.

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

Pokud nyní načteme všechna data z DetailsView jako,

  SELECT   *   FROM   DetailsView;>

Výstup:

vložit řádek do příkladu zobrazení

Příklad 3: Odstranění řádku z pohledu

Odstranění řádků z pohledu je také stejně jednoduché jako odstranění řádků z tabulky. K odstranění řádků z pohledu můžeme použít příkaz DELETE jazyka SQL. Také odstranění řádku z pohledu nejprve odstraní řádek ze skutečné tabulky a změna se poté projeví v pohledu.

V tomto příkladu odstraníme poslední řádek z pohledu DetailsView, který jsme právě přidali ve výše uvedeném příkladu vkládání řádků.

  DELETE FROM   DetailsView   WHERE   NAME='Suresh';>

Pokud nyní načteme všechna data z DetailsView jako,

  SELECT   *   FROM   DetailsView;>

Výstup:

odstranit řádek z příkladu zobrazení

S doložkou CHECK OPTION

The S MOŽNOSTÍ KONTROLY klauzule v SQL je velmi užitečná klauzule pro pohledy. Platí pro aktualizovatelný pohled.

Klauzule WITH CHECK OPTION se používá k zabránění úpravám dat (pomocí INSERT nebo UPDATE), pokud není splněna podmínka v klauzuli WHERE v příkazu CREATE VIEW.

Pokud jsme v příkazu CREATE VIEW použili klauzuli WITH CHECK OPTION a pokud klauzule UPDATE nebo INSERT nesplňuje podmínky, vrátí chybu.

Příklad ustanovení WITH CHECK OPTION:

V níže uvedeném příkladu vytváříme View SampleView z tabulky StudentDetails s klauzulí WITH CHECK OPTION.

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

Pokud se v tomto zobrazení nyní pokusíme vložit nový řádek s hodnotou null do sloupce NAME, dojde k chybě, protože pohled je vytvořen s podmínkou pro sloupec NAME jako NOT NULL. Přestože je například zobrazení aktualizovatelné, není platný ani následující dotaz pro toto zobrazení:

třída vs objekt java
  INSERT INTO   SampleView(S_ID)   VALUES  (6);>

POZNÁMKA : Výchozí hodnota sloupce NAME je nula .

Použití pohledu

Dobrá databáze by měla obsahovat pohledy z uvedených důvodů:

  1. Omezení přístupu k datům - Pohledy poskytují další úroveň zabezpečení tabulky omezením přístupu k předem určené sadě řádků a sloupců tabulky.
  2. Skrytí složitosti dat – Pohled může skrýt složitost, která existuje ve více spojených tabulkách.
  3. Zjednodušte příkazy pro uživatele – Pohledy umožňují uživateli vybrat informace z více tabulek, aniž by uživatelé museli skutečně vědět, jak provést spojení.
  4. Ukládat složité dotazy – Pohledy lze použít k ukládání složitých dotazů.
  5. Přejmenovat sloupce – Pohledy lze také použít k přejmenování sloupců bez ovlivnění základních tabulek za předpokladu, že počet sloupců v pohledu musí odpovídat počtu sloupců zadaného v příkazu select. Přejmenování tedy pomáhá skrýt názvy sloupců základních tabulek.
  6. Možnost vícenásobného zobrazení – Na stejné tabulce mohou být vytvořeny různé pohledy pro různé uživatele.

Klíčové poznatky o SQL pohledech

  • Pohledy v SQL jsou jakousi virtuální tabulkou.
  • Pole v pohledu mohou být z jedné nebo více tabulek.
  • Pohled můžeme vytvořit pomocí příkazu CREATE VIEW a pohled odstranit pomocí příkazu DROP VIEW.
  • Pohled můžeme aktualizovat pomocí příkazu CREATE OR REPLACE VIEW.
  • Klauzule WITH CHECK OPTION se používá k zabránění vkládání nových řádků, které nesplňují podmínku filtrování pohledu.