K interakci s relačními databázemi a tvorbě SQL pohledů se používá jazyk SQL, neboli Structured Query Language.
Co jsou tedy SQL pohledy? Jedná se o virtuální tabulky, které sdružují a uchovávají data z existujících databázových tabulek. Poskytují bezpečný a zjednodušený přístup k datové sadě, a zároveň maskují interní struktury a implementaci tabulek.
Jak to funguje? Pro vytváření SQL pohledů se používají SQL dotazy. Při vytvoření SQL pohledu se uloží základní SQL dotaz. Když následně použijete SQL dotaz pro získání dat z více tabulek, dotaz se provede a načte data z odpovídajících databázových tabulek. Stejně tak, když se dotazujete na vytvořený SQL pohled, nejprve se načte uložený dotaz a poté se provede.
Jaký je přínos vytváření SQL pohledů?
Vzhledem k tomu, že SQL pohledy jsou založeny na uložených SQL dotazech, pomáhají zajistit bezpečnost vaší databáze. Mimo jiné zjednodušují komplexní dotazy a zlepšují výkon. Pojďme se podívat na konkrétní přínosy pro vaši databázi a aplikace:
#1. Zajištění bezpečnosti databáze
SQL pohledy fungují jako virtuální tabulky, čímž zakrývají strukturu reálných databázových tabulek. Při pohledu na pohled není zřejmé, kolik tabulek se v pozadí nachází a jaké sloupce jednotlivé tabulky obsahují. Dále je možné v databázi nastavit omezení přístupu, takže uživatel může dotazovat pouze pohled, nikoli samotné tabulky.
#2. Zjednodušení složitých dotazů
Vaše SQL dotazy často zahrnují více tabulek s komplexními podmínkami spojení. Pokud tyto složité dotazy používáte opakovaně, můžete využít výhod vytváření SQL pohledů. Složitý dotaz se uloží do SQL pohledu, a vy se pak dotazujete pouze na pohled, namísto spouštění celého složitého dotazu.
#3. Ochrana před změnami schématu
Při změnách struktury základních tabulek, jako je přidání nebo odebrání sloupců, zůstávají vaše pohledy nedotčené. Pokud se spoléháte na SQL pohledy pro všechny dotazy, nemusíte se obávat změn schématu. Jelikož se jedná o virtuální tabulky, vytvořený SQL pohled bude fungovat i nadále bez problémů.
#4. Zlepšení výkonu dotazů
Při vytváření SQL pohledů databázový engine optimalizuje podkladový dotaz před jeho uložením. Uložený dotaz se pak spouští rychleji, než když byste spouštěli ten samý dotaz přímo. Použitím SQL pohledů pro dotazování získáte lepší výkon a rychlejší výsledky.
Jak vytvářet SQL pohledy?
Pro vytváření SQL pohledů se používá příkaz CREATE VIEW
. Pohled obsahuje příkaz SELECT
, který definuje dotaz uložený v pohledu. Syntaxe je následující:
CREATE VIEW nazev_pohledu AS
SELECT
sloupec_1,
sloupec_2,
sloupec_3...
FROM
tabulka_1, tabulka_2
WHERE
podminka;
Pojďme si to ukázat na příkladu. Předpokládejme, že máte vytvořeny dvě tabulky: `oddělení` a `zaměstnanci`. Tabulka `oddělení` obsahuje název oddělení a jeho ID. Tabulka `zaměstnanci` obsahuje jméno a ID zaměstnance spolu s ID oddělení, do kterého spadá. Z těchto dvou tabulek vytvoříme SQL pohled.
Vytvoření databázových tabulek
department_id | department_name |
1 | Finance |
2 | Technologie |
3 | Obchod |
Tabulka 1: oddělení
Pokud používáte MySQL, můžete tuto tabulku vytvořit následujícím dotazem:
CREATE TABLE `department` (
`department_id` int,
`department_name` varchar(255),
PRIMARY KEY (`department_id`)
);
Vložte data do vytvořené tabulky pomocí následujícího SQL:
INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technologie');
INSERT INTO department VALUES (3, 'Obchod');
zaměstnanec_id | zaměstnanec_jméno | department_id |
100 | John | 3 |
101 | Mary | 1 |
102 | Natalya | 3 |
103 | Bruce | 2 |
Tabulka 2: zaměstnanci
Po vytvoření a naplnění tabulky `oddělení` vytvořte tabulku `zaměstnanci` pomocí následujícího dotazu MySQL:
CREATE TABLE `employee` (
`employee_id` INT,
`employee_name` VARCHAR(255),
`department_id` INT,
FOREIGN KEY (`department_id`) REFERENCES department(department_id)
);
Následně vložte záznamy zaměstnanců do tabulky. Je důležité mít na paměti, že sloupec `department_id` odkazuje na cizí klíč v tabulce `oddělení`, proto nelze vložit `department_id`, které se v tabulce `oddělení` nenachází.
INSERT INTO employee VALUES (100, 'John', 3);
INSERT INTO employee VALUES (101, 'Mary', 1);
INSERT INTO employee VALUES (102, 'Natalya', 3);
INSERT INTO employee VALUES (103, 'Bruce', 1);
Dotazování databázových tabulek
Pojďme nyní použít tabulky v databázovém dotazu. Představte si situaci, kdy potřebujete dotazovat na `zaměstnanec_id`, `zaměstnanec_jméno` a `název_oddělení` pro všechny zaměstnance. V tomto případě je nutné použít obě tabulky a spojit je pomocí společného sloupce, kterým je `department_id`. Dotaz by tedy vypadal následovně:
SELECT
employee_id,
employee_name,
department_name
FROM
employee,
department
WHERE
employee.department_id = department.department_id;
Vytvoření SQL pohledu
Je možné, že tato data vyhledáváte nebo na ně odkazujete často. Navíc s přibývajícím počtem záznamů v tabulkách se začne prodlužovat doba dotazování. V takovém případě je ideální vytvořit SQL pohled odpovídající tomuto dotazu.
Vytvořte pohled s názvem `zaměstnanec_info` pomocí následujícího dotazu:
CREATE VIEW employee_info AS
SELECT
employee_id,
employee_name,
department_name
FROM
employee,
department
WHERE
employee.department_id = department.department_id;
Po vytvoření pohledu se můžete přímo dotazovat na stejná data. Dotaz se tedy zjednoduší na:
SELECT
*
FROM
employee_info;
Dotazování SQL pohledu poskytuje stejný výstup jako spuštění původního dotazu. Váš dotaz je však nyní lépe udržitelný. Pohled skryje složitost vašeho dotazu, aniž by došlo ke kompromisu ve výsledku nebo výkonu.
Jak nahradit SQL pohledy?
Pokud máte pohled s určitým názvem a chcete jej upravit nebo nahradit, použijte příkaz CREATE OR REPLACE VIEW
. Tímto způsobem můžete upravit příkaz SELECT
, který byl použit k vytvoření pohledu. Výstup pohledu je nahrazen, přičemž název pohledu zůstává stejný. Navíc, pokud pohled neexistuje, vytvoří se nový.
SQL pohledy můžete nahradit pomocí následující syntaxe:
CREATE OR REPLACE VIEW nazev_pohledu AS
SELECT
novy_sloupec_1,
novy_sloupec_2,
novy_sloupec_3...
FROM
nova_tabulka_1,
nova_tabulka_2 ...
WHERE
nova_podminka;
Pro lepší pochopení si to ukážeme na příkladu. Máme tabulky `oddělení` a `zaměstnanci`, ze kterých je vytvořen SQL pohled `zaměstnanec_info`, obsahující sloupce `zaměstnanec_id`, `zaměstnanec_jméno` a `název_oddělení`.
Z důvodu bezpečnostních opatření může být vhodné odstranit z pohledu sloupec `zaměstnanec_id`. Dále by bylo vhodné změnit názvy sloupců, aby se skryly skutečné názvy sloupců v databázi. Tyto změny lze provést pomocí následujícího dotazu SQL:
CREATE OR REPLACE VIEW employee_info AS
SELECT
employee_name as name,
department_name as department
FROM
employee,
department
WHERE
employee.department_id = department.department_id;
Po nahrazení pohledu získáte jiné výsledky, když použijete stejný dotaz jako dříve. Z výsledku dotazu zjistíte, že jeden ze sloupců byl vypuštěn. Navíc názvy sloupců byly upraveny z `zaměstnanec_jméno` a `název_oddělení` na `jméno` a `oddělení`.
Využijte sílu vytváření SQL pohledů
Vytvořením SQL pohledů dosáhnete nejen zjednodušení dotazů a rychlejšího vyhledávání dat, ale také zabezpečení a ochrany před změnami schématu. Vytváření SQL pohledů je poměrně jednoduché. Můžete vzít jakýkoli existující dotaz a přeměnit ho na SQL pohled.
Postupujte podle výše uvedeného podrobného návodu a začněte vytvářet SQL pohledy a využívat jejich výhody. Pomocí SQL pohledů můžete zjednodušit a zabezpečit databázové aplikace a zároveň zlepšit jejich výkon.
Pokud chcete spravovat vlastní SQL server, vyzkoušejte SQL Server Management Studio (SSMS).