SQL - pohľady: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
Riadok 37: Riadok 37:
 
Zoberme si príklad z časti [[SQL_-_select#SELECT_-_zoskupovanie|SQL príkazy]].  
 
Zoberme si príklad z časti [[SQL_-_select#SELECT_-_zoskupovanie|SQL príkazy]].  
  
Úloha: Vytvorte pohľad z výsledkov dotazu "Akými jazykmi sa hovorí v hlavných mestách európy?".
+
Ú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  
 
SQL dotaz pre výber požadovaných údajov je  
Riadok 50: Riadok 50:
 
</source>
 
</source>
  
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".
+
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'.
  
 
[[Súbor:SQL views1.png|center]]
 
[[Súbor:SQL views1.png|center]]
  
Vyberieme "CREATE VIEW". Otvorí sa okno, kde je treba vyplniť doplňujúce informácie:
+
Vyberieme 'CREATE VIEW'. Otvorí sa okno, kde je treba vyplniť doplňujúce informácie:
  
 
[[Súbor:SQL views2.png|center]]
 
[[Súbor:SQL views2.png|center]]

Verzia zo dňa a času 21:14, 27. december 2010

Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

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