Pokud vaše dotazy nefungují dostatečně tvrdě, přidáním některých základních příkazů SQL můžete výsledky soustředit. Podívejme se na několik typů příkazů SQL a na klauzule nebo části, které můžete upravit, abyste získali požadované výsledky.
Poznámka: Tento článek se nevztahuje na webové aplikace pro Access (to je druh databází, které se navrhují v Accessu a publikují online).
V tomto článku
Vytvoření příkazu Select
Příkaz SQL Select má dvě až tři klauzule. Klauzule SELECT říká databázi, kde má hledat data, a požádá ji o vrácení konkrétního výsledku.
Poznámka: Příkazy SELECT vždy končí středníkem (;) buď na konci poslední klauzule, nebo na řádku na konci příkazu SQL.
Následující příkaz select požádá Access, aby získal informace ze sloupců E-mail Address (E-mailová adresa) a Company (Společnost) z tabulky Contacts (Kontakty), konkrétně tam, kde ve sloupci City (Město) najde "Seattle".
Výše uvedený dotaz obsahuje tři klauzule SELECT, FROM a WHERE.
1. Klauzule SELECT obsahuje seznam sloupců obsahujících data, která chcete použít, a obsahuje operátor (SELECT) následovaný dvěma identifikátory (E-mailová adresa a Společnost). Pokud identifikátor obsahuje mezery nebo speciální znaky (například "E-mailová adresa"), uzavřete identifikátor do hranatých závorek.
2. Klauzule FROM identifikuje zdrojová tabulka. V tomto příkladu má operátor (FROM) následovaný identifikátorem (Kontakty).
3. Klauzule WHERE je volitelná. Příklad obsahuje operátor (WHERE) následovaný výrazem (City="Seattle").
Další informace o výběrových dotazech najdete v tématu Vytvoření jednoduchého výběrového dotazu.
Tady je seznam běžných klauzulí SQL:
Klauzule SQL |
Akce |
Povinné ? |
SELECT |
Zobrazí seznam polí, která obsahují zajímavá data. |
Ano |
FROM |
Zobrazí seznam tabulek, které obsahují pole uvedená v klauzuli SELECT. |
Ano |
WHERE |
Určuje kritéria pole, která musí každý záznam splnit, aby byl zahrnut do výsledků. |
Ne |
ORDER BY |
Určuje, jak se mají výsledky seřadit. |
Ne |
GROUP BY |
V příkazu SQL, který obsahuje agregační funkce, zobrazí seznam polí, která nejsou shrnuta v klauzuli SELECT. |
Pouze v případě, že taková pole existují. |
HAVING |
V příkazu SQL, který obsahuje agregační funkce, určuje podmínky, které platí pro pole souhrnná v příkazu SELECT. |
Ne |
Každá klauzule SQL se skládá z termínů. Tady je seznam některých běžných termínů SQL.
Termín SQL |
Definice |
Příklad |
Identifikátor |
Název, který použijete k identifikaci databázového objektu, například název sloupce. |
[E-mailová adresa] a společnost |
Operátor |
Klíčové slovo, které představuje akci nebo upravuje akci. |
AS |
Konstanta |
Hodnota, která se nezmění, například číslo nebo NULL. |
42 |
Výraz |
Kombinace identifikátorů, operátorů, konstant a funkcí, která se vyhodnocuje na jednu hodnotu. |
>= Produkty. [Jednotková cena] |
Přizpůsobení klauzule SELECT
Přizpůsobení |
Příklad |
Chcete-li zobrazit pouze jedinečné hodnoty. Použijte klíčové slovo DISTINCT v klauzuli SELECT. |
Pokud například vaši zákazníci pocházejí z několika různých poboček a některé mají stejné telefonní číslo a vy chcete telefonní číslo vidět jenom jednou, bude klauzule SELECT vypadat takto:
|
Změna způsobu zobrazení identifikátoru v zobrazení datových listů za účelem zlepšení čitelnosti Použijte operátor AS (klíčové slovo, které představuje akci nebo upravuje akci) s aliasem pole v klauzuli SELECT. Alias pole je název, který přiřadíte poli, aby se výsledky snadněji četly. |
|
Přizpůsobení klauzule FROM
Přizpůsobení |
Příklad |
Můžete použít alias tabulky nebo jiný název, který tabulce přiřadíte v příkazu select. Alias tabulky je užitečný, pokud je název tabulky dlouhý, zejména pokud máte více polí se stejným názvem z různých tabulek. |
Pokud chcete vybrat data ze dvou polí, obou s názvem ID, z nichž jedno pochází z tabulky tblCustomer a druhé z tabulky tblOrder:
Pomocí operátoru AS definujte aliasy tabulky v klauzuli FROM:
Tyto aliasy tabulek pak můžete použít v klauzuli SELECT následujícím způsobem:
|
Pomocí spojení můžete zkombinovat dvojice záznamů ze dvou zdrojů dat do jednoho výsledku nebo určit, jestli se mají zahrnout záznamy z obou tabulek, pokud v související tabulce neexistuje odpovídající záznam. Spojit tabulky tak, aby dotaz sloučil položky z tabulek a vyloučil položky, pokud v druhé tabulce není odpovídající záznam. |
Klauzule FROM může vypadat takto:
|
Informace o použití spojení
Existují dva typy spojení, vnitřní a vnější spojení. Vnitřní spojení jsou častější v dotazech. Když spustíte dotaz s vnitřním spojením, zobrazí se ve výsledku jenom ty položky, u kterých existuje společná hodnota v obou spojených tabulkách.
Vnější spojení určují, zda se mají zahrnout data, u kterých neexistuje žádná společná hodnota. Vnější spojení jsou směrová, což znamená, že můžete určit, jestli se mají zahrnout všechny záznamy z první tabulky zadané ve spojení (označované jako levé spojení), nebo zahrnout všechny záznamy z druhé tabulky do spojení (označované jako pravé spojení). Vnější spojení má následující syntaxi SQL:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Další informace o použití spojení v dotazu najdete v tématu Spojení tabulek a dotazů.
Přizpůsobení klauzule WHERE
Klauzule WHERE obsahuje kritéria, která pomáhají omezit počet položek vrácených v dotazu. Podívejte se na příklady kritérií dotazů a jejich fungování.
Příkladem toho, jak můžete přizpůsobit základní klauzuli WHERE, je omezit výsledky dotazu; Předpokládejme, že chcete najít telefonní číslo zákazníka a jeho příjmení si pamatujete jenom jako Bagel. V tomto příkladu jsou příjmení uložená v poli Příjmení, takže syntaxe SQL by byla:
WHERE [LastName]='Bagel'
Klauzule WHERE slouží také ke kombinování zdrojů dat pro sloupce, které mají odpovídající data, ale různé datové typy. To je užitečné, protože nemůžete vytvořit spojení mezi poli, která mají různé datové typy. Jedno pole použijte jako kritérium pro druhé pole s klíčovým slovem LIKE . Pokud například chcete použít data z tabulky Assets (Prostředky) a Employees (Zaměstnanci), pouze pokud má typ aktiva v poli Typ majetku v tabulce Prostředky číslo 3 v poli Množství v tabulce Zaměstnanci, bude klauzule WHERE vypadat takto:
WHERE field1 LIKE field2
Důležité informace: Kritéria nelze zadat pro pole použité s agregační funkcí v klauzuli WHERE. Místo toho musíte k zadání kritérií agregovaných polí použít klauzuli HAVING.
Přizpůsobení pomocí operátoru UNION
Operátor UNION použijte, pokud chcete zobrazit kombinované zobrazení výsledků z několika podobných výběrových dotazů. Například pokud vaše databáze obsahuje tabulku Produkty a služby a obě pole mají tři pole: exkluzivní nabídka nebo produkt nebo služba, cena, záruka nebo záruka. I když tabulka Products (Produkty) uchovává informace o záruce a tabulka Services (Služby) zaručuje informace, základní informace jsou stejné. Pomocí sjednocovacího dotazu můžete zkombinovat tři pole ze dvou tabulek takto:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Při spuštění dotazu se data z každé sady odpovídajících polí zkombinují do jednoho výstupního pole. Pokud chcete do výsledků zahrnout všechny duplicitní řádky, použijte operátor ALL.
Poznámka: Příkaz Select musí mít stejný počet výstupních polí ve stejném pořadí a se stejnými nebo kompatibilními datovými typy. Pro účely sjednocovacího dotazu jsou datové typy Číslo a Text kompatibilní.
Další informace o sjednocovacích dotazech najdete v tématu Použití sjednocovacího dotazu k zobrazení sjednoceného výsledku z více dotazů.