logo

SQL pohledy

Pohled v SQL je uložený SQL dotaz, který funguje jako virtuální tabulka. Na rozdíl od běžných tabulek pohledy neukládají data samy o sobě. Místo toho dynamicky generují data prováděním SQL dotazu definovaného v pohledu při každém přístupu k němu.

Může načítat data z jedné nebo více tabulek a prezentovat je v přizpůsobeném formátu, který vývojářům umožňuje:

  • Zjednodušte složité dotazy: Zapouzdřte komplexní spojení a podmínky do jednoho objektu.
  • Zvýšení zabezpečení: Omezte přístup na konkrétní sloupce nebo řádky.
  • Prezentujte data flexibilně: Poskytujte přizpůsobené zobrazení dat pro různé uživatele.

Jako příklady použijeme tyto dvě SQL tabulky.



Podrobnosti o studentovi:

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

výstup:

S_ID

Jméno

Adresa

1

Drsné

Kalkata

2

Ashish

Durgapur

3

Praxe

Dillí

4

Dhanraj

Bihar

5

Beran

Rádžasthán

Známky studenta:

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

výstup:

ID

Jméno

Marks

Stáří

1

Drsné

90

19

2

Suresh

50

20

3

Praxe

80

19

4

Dhanraj

95

21

5

Beran

85

18

VYTVOŘTE POHLEDY v SQL

Pohled můžeme vytvořit pomocí příkazu CREATE VIEW. 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;

Klíčové pojmy:

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

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

Příklad 1.1: 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;

Pomocí níže uvedeného dotazu načtěte data z tohoto zobrazení

SELECT * FROM DetailsView;

výstup: 

Jméno

Adresa

Drsné

Kalkata

Ashish

Durgapur

Praxe

Dillí

Dhanraj

Bihar

Příklad 1.2: Zde 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 nyní dotazujeme pohled jako

    SELECT    *     FROM    StudentNames;

výstup: 

S_ID

Jméno

2

Ashish

4

Dhanraj

1

Drsné

3

Praxe

5

Beran

java int jako řetězec

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

V tomto příkladu vytvoříme View MarksView, který kombinuje data z obou tabulek StudentDetails a StudentMarks. Chcete-li vytvořit pohled z více tabulek, můžeme jednoduše zahrnout více tabulek do VYBRAT prohlášení.

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:

Jméno

Adresa

Marks

Drsné

Kalkata

90

Praxe

Dillí

80

Dhanraj

Bihar

95

Beran

Rádžasthán

85

Správa pohledů: Aktualizace a mazání seznamu

1. Výpis všech pohledů v databázi

Všechny pohledy v databázi můžeme vypsat pomocí příkazu SHOW FULL TABLES nebo dotazem na tabulky information_schema.

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

Použití information_schema

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. Odstranění pohledu

SQL nám umožňuje odstranit existující pohled. Můžeme vymazat nebo zrušte View pomocí příkazu DROP.

Syntax:

DROP VIEW view_name;

Příklad: V tomto příkladu odstraňujeme View MarksView.

DROP VIEW MarksView;

3. Aktualizace definice pohledu

Pokud chceme aktualizovat existující data v rámci pohledu, použijte  AKTUALIZOVAT  prohlášení.

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

Pokud chcete aktualizovat definici pohledu bez ovlivnění dat, použijte příkaz CREATE OR REPLACE VIEW. Přidejme napříkladAgesloupec kMarksView:

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

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

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 splnil pohled nelze aktualizovat.

třída vs objekt java
  1. Příkaz SELECT, který se používá k vytvoření pohledu, by neměl obsahovat klauzuli GROUP BY nebo OBJEDNAT PODLE doložka.
  2. Příkaz SELECT by neměl mít ODLIŠNÝ klíčové slovo.
  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.

Pokročilé techniky s pohledy

1. Aktualizace dat prostřednictvím pohledů

K přidání nebo nahrazení polí z pohledu můžeme použít příkaz CREATE OR REPLACE VIEW Pokud chceme aktualizovat pohled MarksView a přidat pole AGE do tohoto pohledu z tabulky StudentMarks, můžeme to udělat takto:

Příklad:

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:

Jméno

Adresa

Marks

Stáří

Drsné

Kalkata

90

19

Praxe

Dillí

80

19

Dhanraj

Bihar

95

21

Beran

Rádžasthán

85

18

Řádek do Pohledu můžeme vložit stejným způsobem jako do tabulky. Můžeme použít VLOŽIT 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'.

Příklad:

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

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

SELECT * FROM DetailsView;

výstup:

Jméno

Adresa

Drsné

Kalkata

Ashish

Durgapur

Praxe

Dillí

Dhanraj

Bihar

Suresh

Gurgaon

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ů.

Příklad:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

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

SELECT * FROM DetailsView;

výstup: 

Jméno

Adresa

Drsné

Kalkata

Ashish

Durgapur

Praxe

Dillí

Dhanraj

Bihar

4. S DOložkou CHECK OPTION

Klauzule WITH CHECK OPTION v SQL je velmi užitečná klauzule pro pohledy. Platí pro aktualizovatelný pohled. Používá se k zabránění úpravě 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. V níže uvedeném příkladu vytváříme View SampleView z tabulky StudentDetails s klauzulí WITH CHECK OPTION.

Příklad:

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. Například i když je zobrazení aktualizovatelné, není platný ani níže uvedený dotaz pro toto zobrazení:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Vytvořit kvíz