SQL - pohľady: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
d
Riadok 1: Riadok 1:
 
{{Skripta_dbs}}
 
{{Skripta_dbs}}
{{Draft}}
 
 
Pohľad (view) je uložený dotazu, prístupný ako virtuálna tabuľka. Pohľad je vlastne výsledkom SQL dotazu. Na rozdiel od bežných tabuliek v relačnej databáze, pohľad nepredstavuje štandardnú tabuľku, ale jedná sa o dynamické, virtuálne tabuľky vypočítaných alebo získaných z údajov z databázy. Zmena údajov v zdrojovej tabuľke (odkiaľ pohľad čerpá údaje) spôsobí zmenu údajov, ktoré poskytuje pohľad.
 
Pohľad (view) je uložený dotazu, prístupný ako virtuálna tabuľka. Pohľad je vlastne výsledkom SQL dotazu. Na rozdiel od bežných tabuliek v relačnej databáze, pohľad nepredstavuje štandardnú tabuľku, ale jedná sa o dynamické, virtuálne tabuľky vypočítaných alebo získaných z údajov z databázy. Zmena údajov v zdrojovej tabuľke (odkiaľ pohľad čerpá údaje) spôsobí zmenu údajov, ktoré poskytuje pohľad.
  

Verzia zo dňa a času 20:31, 2. január 2011

Pohľad (view) je uložený dotazu, prístupný ako virtuálna tabuľka. Pohľad je vlastne výsledkom SQL dotazu. Na rozdiel od bežných tabuliek v relačnej databáze, pohľad nepredstavuje štandardnú tabuľku, ale jedná sa o dynamické, virtuálne tabuľky vypočítaných alebo získaných z údajov z databázy. Zmena údajov v zdrojovej tabuľke (odkiaľ pohľad čerpá údaje) spôsobí zmenu údajov, ktoré poskytuje pohľad.

Vlastnosti pohľadov

Pohľad má nasledujúce výhody:

  • Zobrazenie môže reprezentovať podmnožinu dát obsiahnutých v tabuľke
  • Pohľad môže jednoducho spojiť viacero tabuliek do jednej virtuálnej tabuľky
  • Pohľad môže byť použitý ako agregácia tabuliek, kde vo výslednej virtuálnej tabuľke (v pohľade) môžu byť vypočítavané polia
  • Pohľad sa navonok javí ako jednoduchá tabuľka, aj keď jej obsahom môže byť komplikovaný dotaz.
  • Pohľad zaberá len veľmi málo miesta. Databáza obsahuje len definíciu pohľadu, nie kópie všetkých údajov, ktoré prezentuje.
  • Pohľad zabezpečuje väčšiu bezpečnosť (prístup len ne čítanie)
  • Zobrazenie je možné obmedziť stupeň expozície tabuľky alebo tabuliek k vonkajšiemu svetu

Vytvorenie pohľadu

Pre vytvorenie pohľadu môžeme použiť SQL nasledovnú syntax:

CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

kde:

  • select_statement - SQL výberový príkaz SELECT, na základe ktorého sa pohľad vytvára.
  • Klauzula ALGORITHM ovplyvňuje to, ako MySQL spracováva pohľad.
  • DEFINER určuje vlastníka, resp. tvorcu pohľadu.
  • Klauzula SQL SECURITY definuje prístupové pravidlá pre daný pohľad.
  • Klauzula WITH CHECK OPTION môže obmedzovať vkladanie alebo aktualizáciu údajov v zdrojových tabuľkách.[1]

Poznámka: Pre tvorbu pohľadov je potrebné mať oprávnenia k zápisu údajov do databázy mysql.

Pohľady prakticky

Zoberme si príklad z časti SQL príkazy.

Úloha: Vytvorte pohľad z výsledkov dotazu 'Akými jazykmi sa hovorí v hlavných mestách európy?'.

SQL dotaz pre výber požadovaných údajov je

   SELECT country.name AS Krajina,city.Name AS Mesto,LANGUAGE, continent 
   FROM countrylanguage, city, country
   WHERE Continent = 'Europe'
         AND Capital = ID
         AND countrylanguage.CountryCode = city.CountryCode
         AND country.code=city.CountryCode
         AND isOfficial = true

Po spustení SQL dotazu v prostredí phpMyAdmin dostaneme výsledok dotazu. Pod tabuľkou z výsledkami je časť 'Operácie s výsledkami dopytu'.

SQL views1.png

Vyberieme 'CREATE VIEW'. Otvorí sa okno, kde je treba vyplniť doplňujúce informácie:

SQL views2.png
  • ALGORITHM - spôsob vytvárania pohľadu. Ponecháme prednastavenú hodnotu UNNDEFINED.
  • VIEW name - názov pohľadu: zvolíme ľubovolne (bez medzier!)
  • Názvy stĺpcov - musíme uriť názvy výsledných stĺpcov

Výsledokm je SQL dotaz:

  CREATE  ALGORITHM = UNDEFINED VIEW `HlavneMestaEuropy` (krajina,mesto,jazyk,kontinent)
         AS SELECT country.name AS Krajina, city.Name AS Mesto, LANGUAGE, continent
            FROM countrylanguage, city, country
            WHERE Continent = 'Europe'
            AND Capital = ID

V zozname tabuliek nám pribudla ďalšia tabuľka HlavneMestaEuropy:

SQL views3.png

Ak si zobrazíme obsah tabuľky HlavneMestaEuropy, dostaneme rovnaký výsledok ako pre SQL dotaz na začiatku tohto príkladu:

SQL views4.png

Na pohľad môžeme aplikovať ľubovoľný SQL výberový dotaz.


Podúloha: Vyberte len tie hlavné mestá, v ktorých sa hovorí po francúzky.

Riešenie:

   SELECT * FROM hlavnemestaeuropy WHERE jazyk LIKE "French"

Výsledok:

SQL views5.png

Zdroje a odkazy