Dnes: 21. ledna 2018    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Databázový stroj
    (Database Engine)

    Pod pojmem Database Engine (tedy pod databázovým strojem) se obvykle rozumí jádro databázového serveru a základní obslužné programy tohoto jádra (například zajišťující vzdálené připojení uživatelů). Lze tedy říci, že databázový stroj je podmnožinou databázového serveru, přičemž pod pojmem databázový server je nutné vidět vybavení (typicky softwarové) pracující nad danou databází a zajišťující veškeré činnosti (včetně všech potřebných komunikací), které nad danou databází mají být zajišťovány.

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    Vyvíjíme databázový a informační systém XVI.


    [Metodologie] - {Začátečníci} V šestnáctém pokračování našeho rozsáhlého seriálu o základních principech a o vývoji databázových a informačních systémů se podíváme na tzv. restrikci a stranou nezůstane ani problematika NULL hodnot. V kombinaci s minule popsanou projekcí nabízí restrikce základní prostředky pro efektivní výběr dat.



    V minulé části jsme pomocí projekce vybírali do výpisu výstupu sloupce nebo nějakým způsobem zpracované obsahy sloupců. Ve výstupu se ale objevily vždy všechny záznamy. V praxi však potřebujeme vypsat prakticky vždy jen určitou množinu záznamů (a zamezit zbytečnému výpisu duplicitních řádků). Aby se tak stalo, musíme potřebnou množinu pro výstup popsat pomocí charakteristické vlastnosti (podmínky). Řádky, ve kterých bude mít logický výraz hodnotu true, budou vybrány. Pokud bude hodnota výrazu false nebo NULL, řádek vybrán nebude. Restrikcí potom tedy máme na mysli omezování řádků ve výsledné výstupní tabulce. Dále je také nutno říci, že restrikce jde většinou ruku v ruce s projekcí.

    Jeden z prvních nejjednodušších způsobů provedení restrikce jsme již prováděli za pomoci klíčového slova DISTINCT. Pomocí tohoto modifikátoru zamezíme výpisu duplicitních řádků.

    Význam operátorů
    Význam operátorů

    V tabulce jsou uvedeny klíčová slova jazyka SQL pro realizaci restrikce. Kromě nich jsou zde i speciální znaky jako _ a %, které se vyskytují v maskách pro zkoumání podobnosti textů.

    Tabulka KDECO
    Tabulka KDECO

    V následujících příkladech budeme využívat pro popis tabulku KDECO. Přímý výpis nám v takové tabulce pravděpodobně nic neřekne, neboť položky jsou zde uvedeny bez vnitřního řádu. Pokusíme-li se z tabulky KDECO vybrat první tři řádky, které mají nejmenší pořadové číslo, budeme kombinovat třídění položek podle sloupce CISLO a zároveň vybereme první tři položky ze setříděného seznamu. Můžeme tak učinit s využitím klíčového slova TOP následovaného číslem 3 tak, jak popisuje následující příklad:

    SELECT TOP 3 * 
      FROM KDECO 
      ORDER BY CISLO
    

    Nutno říci, že jak předcházející dotaz pomocí TOP, tak následující s pomocí PERCENT, podporují pouze některé databázové platformy. MySQL nás v tomto případě neobslouží :-(

    Omezovat v setříděných seznamech počet zobrazených položek můžeme též s využitím představy o procentu zobrazených položek. Rozsah 100 % znamená zobrazit všechny řádky, zatímco jakékoli jiné nenulové menší číslo znamená příslušnou část celku:

    SELECT TOP 30 PERCENT * 
      FROM KDECO 
      ORDER BY NAZEV
    

    Doposud jsme používali pro omezení počtu výstupních řádků tabulky sekce dotazu, která přísluší spíše projekci. Nyní se podíváme na základní část dotazu, která pro restrikci slouží prvoplánově. Pomocí klauzule WHERE a s ní spojené podmínky, definujeme množinu řádků ze vstupní tabulky, se kterými chceme dále pracovat. Tzn. rozšiřujeme základní tvar dotazu z minulé části:

    SELECT Projekce FROM Tabulka
    

    na

    SELECT Projekce FROM Tabulka WHERE Restrikce
    

    Například se lze podle předchozího schématu dotázat:

    SELECT * 
      FROM KDECO 
      WHERE CISLO>20
    

    Podmínku (logický výraz) uváděný za klíčovým slovem WHERE lze dále kombinovat pomocí logických operátorů. Mezi nejdůležitější logické operátory patří NOT – kombinace se uplatní, když následující podmínka je nepravdivá, AND – kombinace se uplatní, jsou-li obě podmínky pravdivé, OR – kombinace se uplatní, když je pravdivá alespoň jedna podmínka. V kombinovaných podmínkách se dále používají ještě další operátory porovnání:

    • BETWEEN...AND – určuje interval hodnot, kde obě hraniční hodnoty patří do intervalu = uzavřený interval
    • LIKE – operátor určuje shodu řetězců podle zadaných znakových požadavků (použití zástupných znaků)
    • IN – operátor určuje shodu s jednou z hodnot množiny určené výčtem prvků

    Pro příklad zde uveďme zápis konstrukce pomocí operátoru IN. Ne všechny požadované položky se v tabulce vyskytují, ale to není na závadu. Výsledná tabulka je složena zkrátka jen z dostupných řádků:

    SELECT * 
      FROM KDECO 
      WHERE CISLO IN (3,16,30)
    

    Operátory IN a LIKE se mohou kombinovat s klíčovým slovem NOT pro obrácení jejich významu. Má smysl hovořit o operátorech NOT LIKE a NOT IN, které znamenají "nevypadá jako" a "není prvkem množiny".

    Podívejme se na možné řešení příkladů:

    Příklad první
    Hledá se auto, které srazilo chodce. Ten vypověděl, že auto bylo cítit po benzínu a nemělo v SPZ číslo 3:

    SELECT SPZ, DRUH_AUTA
      FROM AUTA
      WHERE SPZ NOT LIKE '%3%' AND 
            PALIVO NOT IN ('PLYN','VODÍK')

    Příklad druhý
    Chátrá vozový park firmy, když se na opravy benzínových vozidel a jejich údržbu vydá měsíčně 25 000 Kč?

    SELECT SUM(AMORTIZACE_KM * NAJETO_ZA_MESIC)
      FROM AUTA
      WHERE PALIVO NOT IN ('VODÍK','PLYN','NAFTA')
    

    Využití NULL
    V jazyce SQL použijeme hodnotu NULL všude tam, kde chybí konkrétní informace. Slovo NULL může zastupovat jak logické, tak numerické, textové nebo datumové hodnoty. NULL není ani true ani false. Nejvíce problémů je s chápáním hodnoty NULL namísto konkrétní textové hodnoty. Pomocí NULL ovšem dovedeme v jazyce SQL lépe modelovat realitu plnou nedefinovaných hodnot. Totální úplnost všech informací je totiž ideálem, ke kterému se můžeme blížit, ale máme-li vytvořit alespoň částečný obraz reálného světa, tak je hodnota NULL nepostradatelná.

    Provádíme-li sčítání, odečítání, násobení nebo dělení, hrozí nám znehodnocení výsledku v případě nedefinovanosti výchozích hodnot. Platí zde jednoduché pravidlo: Je-li alespoň jedna z výchozích hodnot rovna NULL, je i výsledek aritmetické operace roven NULL.

    Pomocí porovnávacích operátorů se přechází od libovolných hodnot k hodnotám logickým. Platí zde obdobný zákon jako u aritmetických operací: Je-li alespoň jedna z výchozích hodnot rovna NULL, je i výsledek porovnávací operace roven NULL.

    Pokud jsou v dané implementaci jazyka definovány nějaké matematické funkce, pak samozřejmě z nedefinovaných hodnot proměnných vytvářejí nedefinované výsledné hodnoty. Výsledek porovnávání v SQL bude vždy logická hodnoty true, false nebo NULL. Výrazy s takovou hodnotou mají význam nejen při projekci, ale zejména při restrikci jako logické výrazy za WHERE.

    Při konstrukci logických výrazů za WHERE jsme občas nuceni konstruovat logické výrazy s užitím spojek AND, OR a NOT. Nejjednodušší situace je u spojky NOT. Je-li hodnota NULL, je i (NOT hodnota) NULL. Pokud spojujeme hodnoty false a NULL spojkou AND, je výsledná hodnota nezávisle na pořadí rovna false. V ostatních případech stačí jako obvykle jedna vstupní hodnota NULL k celkové nedefinovanosti výrazu s AND. Pokud spojujeme hodnotu true a NULL spojkou OR, je výsledná hodnota nezávisle na pořadí rovna true. V ostatních případech stačí jedna vstupní hodnota NULL k celkové nedefinovanosti výrazu s OR.

    Související články:
    Vyvíjíme databázový a informační systém XXV. (28.12.2004)
    Vyvíjíme databázový a informační systém XXIV. (27.12.2004)
    Vyvíjíme databázový a informační systém XXIII. (16.12.2004)
    Vyvíjíme databázový a informační systém XXII. (07.12.2004)
    Vyvíjíme databázový a informační systém XXI. (16.11.2004)
    Vyvíjíme databázový a informační systém XX. (03.11.2004)
    Vyvíjíme databázový a informační systém XIX. (25.10.2004)
    Vyvíjíme databázový a informační systém XVIII. (13.10.2004)
    Vyvíjíme databázový a informační systém XVII. (04.10.2004)
    Vyvíjíme databázový a informační systém XV. (13.09.2004)
    Vyvíjíme databázový a informační systém XIV. (25.08.2004)
    Vyvíjíme databázový a informační systém XIII. (18.08.2004)
    Vyvíjíme databázový a informační systém XII. (02.08.2004)
    Vyvíjíme databázový a informační systém XI. (14.07.2004)
    Vyvíjíme databázový a informační systém X. (07.07.2004)
    Vyvíjíme databázový a informační systém IX. (01.07.2004)
    Vyvíjíme databázový a informační systém VIII. (23.06.2004)
    Vyvíjíme databázový a informační systém VII. (16.06.2004)
    Vyvíjíme databázový a informační systém VI. (09.06.2004)
    Vyvíjíme databázový a informační systém V. (02.06.2004)
    Vyvíjíme databázový a informační systém IV. (26.05.2004)
    Vyvíjíme databázový a informační systém III. (19.05.2004)
    Vyvíjíme databázový a informační systém II. (12.05.2004)
    Vyvíjíme databázový a informační systém I. (05.05.2004)

    ( Celý článek! | Autor: Martin Pokorný | Počet komentářů: 2 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1557 hl.)
    Do 1 000,- Kč 
     (1074 hl.)
    Do 10 000,- Kč 
     (1003 hl.)
    Do 25 000,- Kč 
     (1385 hl.)
    Do 50 000,- Kč 
     (1019 hl.)
    Do 75 000,- Kč 
     (1183 hl.)
    Více než 75 000,- Kč 
     (1022 hl.)

    Celkem hlasovalo: 8243


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Leden  >>
    PoÚtStČtSoNe
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena