Access: Dotazy

29. Apríla 2016, Ondrej Kvasnica Pridaj komentár »

Študijný materiál k predmetu Bázy dát žiakov SOŠ masmediálnych a informačných štúdií

Dotaz je databázový objekt, ktorý obsahuje príkaz pre databázu. Je to krok medzi tabuľkami a používateľským rozhraním. Napríklad zostava si prostredníctvom dotazu vyžiada z tabuliek potrebné údaje a následne ich poskytne v požadovanom rozložení na výstupe. Dokážeme formuláre a zostavy vytvárať aj bez znalosti dotazov, a to vďaka sprievodcom, návrhovým zobrazeniam a iným nástrojom, ktoré dotazy vytvoria za nás, avšak ich možnosti sú obmedzené. Majú iba pomáhať, nie prácu programátora úplne nahrádzať. Napríklad v sprievodcovi zostavou si môžeme vybrať na zobrazenie len niektoré stĺpce/polia tabuľky, nie však riadky/záznamy. To docielime iba tak, že si najskôr sami vytvoríme dotaz, v ktorom nadefinujeme požadované záznamy, a k nemu potom môžeme už aj prostredníctvom sprievodcu vytvoriť zostavu.

Dotazy sa píšu v jazyku SQL (Structured Query Language – štruktúrovaný dotazovací jazyk). Rozdeľujú sa do dvoch základných skupín:

1. Definičné dotazy

Ide o takzvaný DDL (Data Definition Language – jazyk na definíciu údajov). Pomocou neho sa vytvárajú, upravujú a rušia databázové objekty, napríklad:
CREATE TABLE názov_tabuľky (názov_poľa_1 údajový_typ_1, názov_poľa_2 údajový_typ_2, …);
– vytvorenie novej tabuľky so zadanými poliami
ALTER TABLE názov_tabuľky ADD názov_poľa údajový_typ;
– zmena existujúcej tabuľky, pridanie nového poľa
DROP TABLE názov_tabuľky;
– zrušenie celej tabuľky

Ešte sa nepracuje s údajmi, ale nastavuje sa, aké bude mať tabuľka polia, údajové typy, kľúče a iné vlastnosti. Sú to úkony, ktoré by sme mohli jednoducho uskutočniť prostredníctvom návrhového zobrazenia tabuľky. Väčšinou pri vytváraní nových jedinečných tabuliek sa to tak robí, ale v prípade, keď chceme napríklad opakovane generovať rovnaké tabuľky, efektívnejšie je definovať jeden dotaz a ten potom iba opakovane spúšťať.

2. Manipulačné dotazy

Používa sa na ne DML (Data Manipulation Language – jazyk na manipuláciu s údajmi). Slúži na vkladanie údajov do databázy, ich zmenu a prezeranie. Ide o úkony, ktoré možno uskutočňovať v zobrazení dátového listu, kde sa už manipuluje s údajmi. Sú to:

a) Pridávacie dotazy

INSERT INTO názov_tabuľky (názov_poľa_1, názov_poľa_2, …) VALUES (hodnota_1, hodnota_2, …);
– vloží do tabuľky nový záznam so zadanými hodnotami do príslušných polí podľa uvedeného poradia

b) Aktualizačné dotazy

UPDATE názov_tabuľky SET názov_poľa = hodnota WHERE podmienka;
– zmení v tabuľke zvolené pole na zadanú hodnotu pri tých záznamoch, ktoré spĺňajú stanovenú podmienku

c) Odstraňovacie dotazy

DELETE FROM názov_tabuľky WHERE podmienka;
– odstráni z tabuľky tie záznamy, ktoré spĺňajú stanovenú podmienku

d) Výberové dotazy

SELECT názov_zobrazeného_poľa_1, názov_zobrazeného_poľa_2, … FROM názov_tabuľky WHERE podmienka ORDER BY názov_zoraďovacieho_poľa_1 spôsob_zoradenia_1, názov_zoraďovacieho_poľa_2 spôsob_zoradenia_2, …;
– vyberie z tabuľky záznamy, ktoré zodpovedajú podmienke, zoradí ich podľa zadaných polí príslušným spôsobom a zobrazí určené polia

Zoraďovanie:

Možno nastaviť zoradenie podľa viacerých polí v poradí podľa priority. Spôsob zoradenia je ASC (ascending – vzostupne) alebo DESC (descending – zostupne). Spôsob zoradenia nie je nutné zadať, potom systém automaticky zoraďuje podľa zadaného poľa vzostupne. Viac polí na zoraďovanie sa oddeľuje čiarkami. Ak nie je definované žiadne zoraďovanie, na výstupe budú záznamy v rovnakom poradí, v akom sa nachádzajú v tabuľke.
Príklad: ORDER BY priezvisko, meno ASC, vek DESC – zoradí podľa priezviska vzostupne, v prípade rovnakých priezvisk zoradí podľa mena vzostupne, v prípade rovnakých priezvisk aj mien zoradí podľa veku zostupne.

Filtrovanie:

V podmienke možno definovať kritériá pre hodnoty jednotlivých polí spracovávanej tabuľky, či už jednoduchá rovnosť, nerovnosť, alebo zložitejšie logické operácie. Ak nie je definovaná žiadna podmienka, príkad sa bude týkať všetkých záznamov.
Príklad: WHERE vek>=18 AND mesto=”Bratislava” – vyfiltruje záznamy, ktoré majú v poli vek hodnotu 18 alebo viac, a zároveň v poli mesto je Bratislava.

Spájanie tabuliek:

Ak chceme v dotaze použiť viac tabuliek, musíme definovať ich vzájomný vzťah a spôsob spojenia. Používajú sa na to príkazy JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN, atď.
Viac informácií: Spojenie tabuliek a dotazov
Príklad: FROM Výrobky INNER JOIN Kategórie ON Výrobky.KódKategórie = Kategórie.KódKategórie – výstupom budú záznamy z tabuľky Výrobky, ktoré majú prislúchajúci záznam v tabuľke Kategórie na základe rovnakej hodnoty v poli KódKategórie.

Zobrazované polia:

Viac polí oddeľujeme čiarkami, v prípade všetkých polí stačí použiť *. Pri práci s viacerými tabuľkami je nutné uvádzať aj názvy tabuliek, z ktorých polia sú.
Príklad: SELECT Objednávky.*, Zamestnanci.Priezvisko, Zamestnanci.[Krstné meno] – zobrazí všetky polia z tabuľky Objednávky a z tabuľky Zamestnanci iba Priezvisko a Krstné meno.

Práca s dotazmi

Dotazy môžu byť pomenované a uložené v zozname objektov. Z neho môžu byť potom spúšťané/otvárané: výberové dotazy sa zobrazia vo forme údajového zobrazenia, ostatné dotazy sa po potvrdení upozornenia jednoducho vykonajú. Okrem toho je výhodou pomenovaných dotazov to, že je ich možné využiť opakovane v mnohých iných objektoch, napr. z výberového dotazu urobiť viac zostáv. Výberové dotazy sa ponúkajú všade tam, kde je možné si vyberať aj zo zoznamu tabuliek (sprievodcovia, vlastnosti objektov: zdroj záznamov, zdroj ovládacieho prvku, zdroj riadkov, …). Ostatné manipulačné či definičné dotazy možno spúšťať napr. kliknutím na tlačidlo formulára (adresa odkazu). Druhá možnosť používania dotazov je ich priamym zadaním do príslušných vlastností iných objektov. Všade tam, kde sa dá vybrať tabuľka/dotaz alebo pole zo zoznamu, je možné taktiež priamo vpísať znenie dotazu, ktorý bude obsahovať požadované polia.

Dotaz je možné vytvoriť pomocou sprievodcu jednoduchým dotazom alebo návrhového zobrazenia / zostavovača dotazov, tieto nástroje na základe zadaných požiadaviek vygenerujú zodpovedajúce SQL príkazy. Zobrazenie SQL umožňuje písať dotazy priamo v jazyku SQL.

Trackbacks /
Pingbacks

  1. Databáza » Ondrej Kvasnica

Pridaj komentár