Access SQL: základné koncepcie, slovník a syntax
Applies ToAccess pre Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ak chcete načítať údaje z databázy, môžete si údaje vyžiadať pomocou jazyka Structured Query Language alebo SQL. SQL je počítačový jazyk, ktorý sa podobá angličtine, a ktorému rozumejú databázové programy. Každý dotaz, ktorý spustíte, používa na pozadí jazyk SQL.

Pochopenie fungovania jazyka SQL vám pomôže vytvárať lepšie dotazy a môže vám to uľahčiť opravu dotazu, ktorý nevracia požadované výsledky.

Toto je jeden zo súboru článkov o jazyku SQL programu Access. V tomto článku sa popisuje základné používanie jazyka SQL na výber údajov a pomocou príkladov ilustruje syntax SQL.

Obsah článku

Čo je SQL?

SQL je počítačový jazyk na prácu s množinami faktov a vzťahmi medzi nimi. Relačné databázové programy, ako je napríklad Microsoft Office Access, používajú SQL na prácu s údajmi. Na rozdiel od mnohých počítačových jazykov nie je SQL náročný na čítanie a porozumenie, dokonca ani pre začiatočníkov. Podobne ako mnohé počítačové jazyky, SQL je medzinárodný štandard, ktorý je uznávaný organizáciami pre štandardizáciu, ako je napríklad ISO a ANSI.

Jazyk SQL sa používa na popis množiny údajov, ktoré vám pomôžu odpovedať na otázky. Keď používate SQL, musíte použiť správnu syntax. Syntax je množina pravidiel, pomocou ktorých sa prvky jazyka správne kombinujú. Syntax jazyka SQL je založená na syntaxi anglického jazyka a používa množstvo rovnakých prvkov ako syntax jazyka Visual Basic for Applications (VBA).

Napríklad jednoduchý príkaz SQL, ktorý načíta zoznam priezvisk pre kontakty, ktorých meno je Mary, môže vyzerať takto:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Poznámka: SQL sa nepoužíva iba na manipuláciu s údajmi, ale aj na vytváranie a zmenu návrhu databázových objektov, ako sú napríklad tabuľky. Súčasť jazyka SQL, ktorá sa používa na vytváranie a zmenu databázových objektov, sa nazýva jazyk definície údajov (DDL). Táto téma sa nezaoberá jazykom DDL. Ďalšie informácie nájdete v článku Vytvorenie alebo úprava tabuliek alebo indexov pomocou dotazu definujúceho údaje.

Príkaz SELECT

Na popis množiny údajov pomocou SQL sa používa príkaz SELECT. Príkaz SELECT obsahuje podrobný popis množiny údajov, ktorú chcete získať z databázy. Patria medzi ne tieto prvky:

  • Ktoré tabuľky obsahujú údaje.

  • Ako súvisia údaje z rôznych zdrojov.

  • Ktoré polia alebo výpočty vygenerujú údaje.

  • Kritériá, ktoré údaje musia spĺňať, aby boli zahrnuté.

  • Informácia, či sa majú výsledky zoradiť a ako sa majú zoradiť.

Klauzuly jazyka SQL

Podobne ako veta, aj príkaz SQL obsahuje klauzuly. Každá klauzula vykoná funkciu pre príkaz SQL. Niektoré klauzuly sa v príkaze SELECT vyžadujú. V nasledujúcom zozname sú uvedené najbežnejšie SQL klauzuly.

SQL klauzula

Jej funkcia

Povinné

SELECT

Uvádza polia s relevantnými údajmi.

Áno

FROM

Uvádza tabuľky, ktoré obsahujú polia uvedené v klauzule SELECT.

Áno

WHERE

Uvádza kritériá pre polia, ktoré musí spĺňať každý záznam, ak sa má zahrnúť do výsledkov.

Nie

ORDER BY

Určuje spôsob zoradenia výsledkov.

Nie

GROUP BY

V SQL príkaze obsahujúcom agregačné funkcie uvádza polia, ktoré nie sú sumarizované v rámci klauzuly SELECT.

Iba ak existujú takéto polia

HAVING

V SQL príkaze obsahujúcom agregačné funkcie určuje podmienky vzťahujúce sa na polia, ktoré nie sú sumarizované v rámci príkazu SELECT.

Nie

SQL výrazy

Každá SQL klauzula pozostáva z výrazov, čo pripomína prvky reči. V nasledujúcej tabuľke sú uvedené typy SQL výrazov.

SQL výraz

Porovnateľné s rečou

Definícia

Príklad

identifikátor

podstatné meno

Názov, ktorý používate na identifikáciu databázového objektu, ako je napríklad názov poľa.

Zákazníci.[Telefónne číslo]

operátor

sloveso alebo príslovka

Kľúčové slovo reprezentujúce akciu alebo upravujúce akciu.

AS

konštanta

podstatné meno

Hodnota, ktorá sa mení, napríklad číslo alebo NULL.

42

výraz

prídavné meno

Kombinácia identifikátorov, operátorov, konštánt a funkcií, ktorá sa vyhodnotí ako jedna hodnota.

>= Produkty.[Jednotková cena]

Na začiatok stránky

Základné klauzuly jazyka SQL: SELECT, FROM a WHERE

SQL príkaz má všeobecný tvar:

SELECT field_1FROM table_1WHERE criterion_1;

Poznámky: 

  • V SQL príkaze Access ignoruje zlomy riadkov. Zvážte však použitie samostatného riadka pre každú klauzulu, čím sa zlepší prehľadnosť vašich SQL príkazov pre vás aj pre ďalších používateľov.

  • Každý príkaz SELECT končí bodkočiarkou (;). Bodkočiarka sa môže zobraziť na konci poslednej klauzuly alebo v samostatnom riadku na konci SQL príkazu.

Príklad v Accesse

Nasledujúci príklad ukazuje, ako môže v Accesse vyzerať jednoduchý SQL príkaz pre jednoduchý výberový dotaz:

Karta SQL objektu zobrazujúca príkaz SELECT

1. Klauzula SELECT

2. Klauzula FROM

3. Klauzula WHERE

Tento ukážkový SQL príkaz môžete prečítať takto: „Vybrať údaje, ktoré sú uložené v poliach s názvom E-mailová adresa a Spoločnosť z tabuľky s názvom Kontakty, a konkrétne tie záznamy, v ktorých je v poli Mesto uvedená hodnota Seattle.“

Pozrime sa na príklad postupne na jednotlivé klauzuly, aby sme zistili, ako funguje syntax jazyka SQL.

Klauzula SELECT

SELECT [E-mail Address], Company

Toto je klauzula SELECT. Obsahuje operátor (SELECT), za ktorým nasledujú dva identifikátory ([E-mailová adresa] a Spoločnosť).

Ak identifikátor obsahuje medzery alebo špeciálne znaky (napríklad „E-mailová adresa“), musí byť uzavretý v hranatých zátvorkách.

V klauzule SELECT sa nemusí uvádzať, ktoré tabuľky obsahujú dané polia, a nie je v nej možné špecifikovať žiadne podmienky, ktoré musia údaje spĺňať, aby sa zahrnuli do výberu.

V príkaze SELECT sa klauzula SELECT vždy nachádza pred klauzulou FROM.

Klauzula FROM

FROM Contacts

Toto je klauzula FROM. Pozostáva z operátora (FROM), za ktorým nasleduje identifikátor (Kontakty).

V klauzule FROM nie je uvedený zoznam polí, ktoré chcete vybrať.

Klauzula WHERE

WHERE City="Seattle"

Toto je klauzula WHERE. Obsahuje operátor (WHERE), za ktorým nasleduje výraz (Mesto=„Seattle“).

Poznámka: Na rozdiel od klauzúl SELECT a FROM, klauzula WHERE nie je v príkaze SELECT povinná.

Pomocou klauzúl SELECT, FROM a WHERE môžete vykonať mnoho činností, ktoré umožňuje jazyk SQL. Ďalšie informácie o používaní týchto klauzúl sú uvedené v týchto doplnkových článkoch:

Na začiatok stránky

Zoradenie výsledkov: ORDER BY

Podobne ako v Microsoft Exceli, aj Access umožňuje zoraďovať výsledky dotazu v údajovom hárku. V dotaze môžete tiež určiť spôsob zoradenia výsledkov pri spustení dotazu pomocou klauzuly ORDER BY. Ak použijete klauzulu ORDER BY, ide o poslednú klauzulu v príkaze SQL.

Klauzula ORDER BY obsahuje zoznam polí, ktoré chcete použiť na zoradenie. Polia sú v rovnakom poradí, v akom chcete použiť operácie zoradenia.

Predpokladajme napríklad, že chcete svoje výsledky zoradiť v zostupnom poradí podľa hodnoty v poli Spoločnosť, a ak existujú záznamy, ktoré majú rovnakú hodnotu pre pole Spoločnosť, výsledky sa ďalej zoradia podľa hodnoty v poli E-mailová adresa vo vzostupnom poradí. Klauzula ORDER BY by mala vyzerať takto:

ORDER BY Company DESC, [E-mail Address]

Poznámka: Podľa predvoleného nastavenia Access zoraďuje hodnoty vo vzostupnom poradí (A – Z, od najmenšieho po najväčšie). Ak chcete hodnoty zoradiť v zostupnom poradí, použite kľúčové slovo DESC.

Ďalšie informácie o klauzule ORDER BY nájdete v téme Klauzula ORDER BY.

Na začiatok stránky

Práca so súhrnnými údajmi: GROUP BY a HAVING

Niekedy sa môže stať, že budete chcieť pracovať so súhrnnými údajmi, ako je napríklad celkový predaj za mesiac alebo najdrahšie položky v zásobách. Na vykonanie tohto kroku použite agregačná funkcia pre pole v klauzule SELECT. Ak napríklad chcete, aby váš dotaz zobrazil počet e-mailových adries pre každú spoločnosť, vaša klauzula SELECT môže vyzerať napríklad takto:

SELECT COUNT([E-mail Address]), Company

Agregačné funkcie, ktoré je možné použiť, závisia od typu údajov, ktoré sa nachádzajú v poli alebo výraze, ktoré chcete použiť. Ďalšie informácie o dostupných agregačných funkciách nájdete v článku Agregačné funkcie SQL.

Určenie polí, ktoré sa nepoužijú v agregačnej funkcii: Klauzula GROUP BY

Keď používate agregačné funkcie, zvyčajne musíte vytvoriť aj klauzulu GROUP BY. V klauzule GROUP BY sa nachádza zoznam všetkých polí, na ktoré sa nevzťahuje agregačná funkcia. Ak sa agregačné funkcie vzťahujú na všetky polia v dotaze, nemusíte vytvárať klauzulu GROUP BY.

Klauzula GROUP BY nasleduje priamo za klauzulou WHERE alebo za klauzulou FROM, ak v príkaze nie je žiadna klauzula WHERE. Klauzula GROUP BY obsahuje polia, ktoré sú uvedené v klauzule SELECT.

Ak budeme pokračovať v predchádzajúcom príklade, v prípade, že sa v klauzule SELECT použije agregačná funkcia na pole [E-mailová adresa], ale nie na pole Spoločnosti, klauzula GROUP BY môže vyzerať takto:

GROUP BY Company

Ďalšie informácie o klauzule GROUP BY nájdete v téme Klauzula GROUP BY.

Obmedzenie agregovaných hodnôt skupinového kritéria: klauzula HAVING

Ak chcete použiť kritériá na obmedzenie výsledkov, ale pole, v ktorom chcete kritériá použiť, sa používa v agregačnej funkcii, klauzulu WHERE nie je možné použiť. Namiesto toho sa používa klauzula HAVING. Klauzula HAVING funguje rovnako ako klauzula WHERE, ale používa sa na súhrnné údaje.

Predpokladajme napríklad, že používate funkciu AVG (ktorý počíta priemernú hodnotu) s prvým poľom v klauzule SELECT:

SELECT COUNT([E-mail Address]), Company

Ak chcete, aby sa v dotaze obmedzili výsledky na základe hodnoty funkcie COUNT, nie je možné použiť kritériá pre toto pole v klauzule WHERE. Namiesto toho vložte kritérium do klauzuly HAVING. Ak napríklad chcete, aby dotaz vrátil iba riadky, ak existujú viaceré e-mailové adresy priradené k spoločnosti, klauzula HAVING môže vyzerať napríklad takto:

HAVING COUNT([E-mail Address])>1

Poznámka: Dotaz môže mať klauzulu WHERE aj klauzulu HAVING. Kritériá pre polia, ktoré nie sú použité v agregačnej funkcii, sa zadajú do klauzuly WHERE a kritériá pre polia, ktoré sa používajú v agregačnej funkcii, sa zadajú do klauzuly HAVING.

Ďalšie informácie o klauzule HAVING nájdete v téme Klauzula HAVING.

Na začiatok stránky

Kombinovanie výsledkov dotazu: UNION

Ak si chcete pozrieť všetky údaje, ktoré vráti niekoľko podobných výberových dotazov spolu ako kombinovanú množinu, môžete použiť operátor UNION.

Operátor UNION umožňuje kombinovať dva príkazy SELECT do jedného. Príkazy SELECT, ktoré kombinujete, musia mať rovnaký počet výstupných polí v rovnakom poradí a s rovnakými alebo kompatibilnými typmi údajov. Keď spustíte dotaz, údaje z každej skupiny zodpovedajúcich polí sa skombinujú do jedného výstupného poľa, aby mal výstup dotazu rovnaký počet polí ako každý výberový príkaz.

Poznámka: Na účely zjednocovacieho dotazu sú typy údajov Number a Text kompatibilné.

Ak použijete operátor UNION, môžete tiež určiť, či výsledky dotazu majú obsahovať duplicitné riadky, ak nejaké existujú, a to pomocou kľúčového slova ALL.

Základná syntax SQL pre zjednocovací dotaz, ktorý spája dva príkazy SELECT, vyzerá takto:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Predpokladajme napríklad, že máte tabuľku s názvom Produkty a ďalšiu tabuľku s názvom Služby. V oboch tabuľkách sa nachádzajú polia s názvom produktu alebo služby, cenou, dostupnosťou záruky alebo ručenia a informáciou o tom, či ponúkate produkt alebo službu výhradne. Hoci tabuľka Produkty obsahuje informácie o záruke a tabuľka Služby informácie o ručení, základné informácie sú rovnaké (čiže to, či sa určitý produkt alebo služba poskytuje s prísľubom kvality). Na skombinovanie štyroch polí z dvoch tabuliek môžete použiť zjednocovací dotaz, napríklad tento:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

Ďalšie informácie o tom ako kombinovať príkazy SELECT pomocou operátora UNION nájdete v téme Skombinovanie výsledkov viacerých výberových dotazov použitím zjednocovacieho dotazu.

Na začiatok stránky

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.