Ak vaše dotazy nepracujú dostatočne tvrdo, pridaním niektorých základných SQL príkazov sa môžete zamerať na výsledky. Pozrime sa na niekoľko typov sql príkazov a klauzúl alebo častí, ktoré môžete upraviť, aby ste získali požadované výsledky.
Poznámka: Tento článok sa nevzťahuje na webové aplikácie Accessu – druh databázy, ktorý navrhujete pomocou Accessu a publikujete online.
Obsah článku
Vytvorenie príkazu Select
Výberový príkaz SQL obsahuje dve až tri klauzuly. Klauzula SELECT oznámi databáze, kde má vyhľadať údaje, a zobrazí výzvu na vrátenie konkrétneho výsledku.
Poznámka: Príkazy SELECT sa vždy končia bodkočiarkou (;) buď na konci poslednej klauzuly, alebo v riadku samotnom na konci príkazu SQL.
Nasledujúci príkaz select požaduje, aby Access získal informácie zo stĺpcov E-mailová adresa a Spoločnosť z tabuľky Kontakty, konkrétne z miesta, kde sa v stĺpci Mesto nachádza "Seattle".
Vyššie uvedený dotaz obsahuje tri klauzuly SELECT, FROM a WHERE.
1. Klauzula SELECT obsahuje stĺpce obsahujúce údaje, ktoré chcete použiť, a 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"), uzavrite identifikátor do hranatých zátvoriek.
2. Klauzula FROM identifikuje zdrojovú tabuľku. V tomto príklade má operátor (FROM) nasledovaný identifikátorom (Kontakty).
3. Klauzula WHERE je voliteľná klauzula. Príklad obsahuje operátor (WHERE) nasledovaný výrazom (City="Seattle").
Ďalšie informácie o výberových dotazoch nájdete v téme Vytvorenie jednoduchého výberového dotazu.
Tu je zoznam bežných sql klauzúl:
SQL klauzula |
Jej funkcia |
Vyžaduje sa ? |
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 |
Každá sql klauzula sa skladá z výrazov. Tu je zoznam niektorých bežných výrazov SQL.
SQL výraz |
Definícia |
Príklad |
identifikátor |
Názov, ktorý sa používa na identifikáciu databázového objektu, ako je napríklad názov stĺpca. |
[E-mailová adresa] a spoločnosť |
operátor |
Kľúčové slovo reprezentujúce akciu alebo upravujúce akciu. |
AS |
konštanta |
Hodnota, ktorá sa mení, napríklad číslo alebo NULL. |
42 |
výraz |
Kombinácia identifikátorov, operátorov, konštánt a funkcií, ktorá sa vyhodnotí ako jedna hodnota. |
>= Produkty.[Jednotková cena] |
Prispôsobenie klauzuly SELECT
Prispôsobenie |
Príklad |
Zobrazenie iba jedinečných hodnôt. V klauzule SELECT použite kľúčové slovo DISTINCT. |
Ak napríklad vaši zákazníci pochádzajú z niekoľkých rôznych pobočiek a niektorí majú rovnaké telefónne číslo a chcete, aby sa v zozname zobrazovalo len raz telefónne číslo, klauzula SELECT by bola takáto:
|
Zmena spôsobu zobrazenia identifikátora v údajovom zobrazení na zlepšenie čitateľnosti. Použite operátor AS (kľúčové slovo, ktoré predstavuje akciu alebo upravuje akciu) s aliasom poľa v klauzule SELECT. Alias poľa je názov, ktorý priradíte k poľu, aby sa výsledky ľahšie čítali. |
|
Prispôsobenie klauzuly FROM
Prispôsobenie |
Príklad |
V príkaze Select môžete použiť alias tabuľky alebo iný názov, ktorý priradíte k tabuľke. Alias tabuľky je užitočný, ak je názov tabuľky dlhý, najmä ak máte viacero polí s rovnakým názvom z rôznych tabuliek. |
Ak chcete vybrať údaje z dvoch polí, oba s názvom ID, z ktorých jedno pochádza z tabuľky tblCustomer a druhé z tabuľky tblOrder:
Na definovanie aliasov tabuliek v klauzule FROM použite operátor AS:
Tieto aliasy tabuliek potom môžete použiť v klauzule SELECT takto:
|
Spojenia sa používajú na kombinovanie párov záznamov z dvoch zdrojov údajov do jedného výsledku alebo na určenie, či sa majú zahrnúť záznamy z niektorej z tabuliek, ak v súvisiacej tabuľke neexistuje zodpovedajúci záznam. Spojenie tabuliek tak, aby dotaz kombinoval položky z tabuliek a vylúčil položky, ak v druhej tabuľke neexistuje zodpovedajúci záznam |
Takto by mohla vyzerať klauzula FROM:
|
Informácie o používaní spojení
Existujú dva typy spojení, vnútorné a vonkajšie spojenie. Vnútorné spojenia sú v dotazoch bežnejšie. Keď spustíte dotaz s vnútorným spojením, výsledok zobrazí iba tie položky, v ktorých v oboch spojených tabuľkách existuje spoločná hodnota.
Vonkajšie spojenia určujú, či sa majú zahrnúť údaje, v ktorých neexistuje žiadna spoločná hodnota. Vonkajšie spojenia sú smerové, čo znamená, že môžete určiť, či sa majú zahrnúť všetky záznamy z prvej tabuľky zadanej v spojení (nazývané ľavé spojenie), alebo zahrnúť všetky záznamy z druhej tabuľky do spojenia (nazývané pravé spojenie). Vonkajšie spojenie má nasledujúcu syntax SQL:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Ďalšie informácie o používaní spojení v dotaze nájdete v téme Spojenie tabuliek a dotazov.
Prispôsobenie klauzuly WHERE
Klauzula WHERE obsahuje kritériá, ktoré pomáhajú obmedziť počet položiek vrátených v dotaze. Pozrite si príklady kritérií dotazu a ich fungovania.
Príkladom toho, ako môžete prispôsobiť základnú klauzulu WHERE, je obmedzenie výsledkov dotazu. Predpokladajme, že chcete vyhľadať telefónne číslo zákazníka a jeho priezvisko si môže pamätať len ako Bagel. V tomto príklade sú priezvisťá uložené v poli Priezvisko, takže syntax SQL by bola:
WHERE [LastName]='Bagel'
Klauzulu WHERE použite aj na kombinovanie zdrojov údajov pre stĺpce, ktoré majú zodpovedajúce údaje, ale rôzne typy údajov. Je to užitočné, pretože nie je možné vytvoriť spojenie medzi poľami, ktoré majú rôzne typy údajov. Jedno pole použite ako kritérium pre druhé pole s kľúčovým slovom LIKE . Ak napríklad chcete použiť údaje z tabuľky Aktíva a tabuľky Zamestnanci, iba ak typ majetku v poli typ majetku v tabuľke Aktíva obsahuje číslo 3 v poli Množstvo v tabuľke Zamestnanci, takto bude vyzerať klauzula WHERE:
WHERE field1 LIKE field2
Dôležité: V klauzule WHERE nie je možné zadať kritériá pre pole, ktoré sa používa s agreganou funkciou. Namiesto toho môžete na stanovenie kritérií pre agregované polia použiť klauzulu HAVING.
Prispôsobenie pomocou operátora UNION
Operátor UNION použite vtedy, keď chcete zobraziť kombinované zobrazenie výsledkov z niekoľkých podobných výberových dotazov. Ak má vaša databáza napríklad tabuľku Produkty a tabuľku Služby a obe obsahujú tri polia: exkluzívnu ponuku alebo produkt alebo službu, cenu, záruku alebo záruku. Napriek tomu, že v tabuľke Produkty sú uložené informácie o záruke a tabuľka Služby obsahuje informácie o záruke, základné informácie sú rovnaké. Zjednocovací dotaz môžete použiť na skombinovanie troch polí z týchto dvoch tabuliek:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Pri spustení dotazu sa údaje z každej množiny zodpovedajúcich polí skombinujú do jedného výstupného poľa. Ak chcete do výsledkov zahrnúť všetky duplicitné riadky, použite operátor ALL.
Poznámka: Príkaz Select musí mať rovnaký počet výstupných polí v rovnakom poradí a s rovnakými alebo kompatibilnými typmi údajov. Na účely zjednocovacieho dotazu sú typy údajov Number a Text kompatibilné.
Ďalšie informácie o zjednocovacích dotazoch nájdete v téme Použitie zjednocovacieho dotazu na zobrazenie jednotného výsledku z viacerých dotazov.