Úprava příkazů SQL s cílem zpřesnit výsledky dotazu

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

Jestliže výsledky dotazů neodpovídají tomu, co chcete, můžete je zpřesnit přidáním několika základních příkazů SQL. Podívejme se teď na několik typů příkazů SQL a klauzule nebo části dotazu, které je možné upravit.

Poznámka :  Tento článek se nevztahuje na aplikace pro Access (to je nový druh databází, které se navrhují v Accessu a publikují online). Další informace najdete v tématu Vytvoření aplikace pro Access.

V tomto článku

Vytvoření příkazu Select

Přizpůsobení klauzule SELECT

Přizpůsobení klauzule FROM

Přizpůsobení klauzule WHERE

Přizpůsobení dotazu pomocí operátoru UNION

Vytvoření příkazu Select

Výběrový příkaz SQL má dvě až tři klauzule. Klauzule SELECT říká databázi, kde má hledat data, a žádá ji, aby vrátila konkrétní výsledek.

Poznámka : Příkazy SELECT jsou vždy zakončené středníkem (;). Středník může být zobrazený na konci poslední klauzule nebo na samostatném řádku na konci příkazu SQL.

Následující výběrový příkaz žádá Access, aby načetl údaje ze sloupců Emailová adresa a Firma, umístěných v tabulce Kontakty, a to jen ty řádky, které mají ve sloupci Město uvedenu hodnotu „Dobříš“.

Karta objektu SQL zobrazující příkaz SELECT

Výše uvedený dotaz má tři klauzule: SELECT, FROM a WHERE.

1. Klauzule SELECT uvádí sloupce, které obsahují požadovaná data. Obsahuje operátor (SELECT) následovaný dvěma identifikátory (Emailová adresa a Firma). Pokud identifikátor obsahuje mezery nebo speciální znaky (např. "E-mailová adresa"), musíte ho uzavřít do hranatých závorek.

2. Klauzule FROM určuje zdrojovou tabulku. V tomto příkladu obsahuje operátor (FROM) následovaný identifikátorem (Kontakty).

3. Klauzule WHERE je volitelná. V tomto příkladu obsahuje operátor (WHERE) následovaný výrazem (Město="Dobříš").

Více informací o výběrových dotazech najdete v článku o vytvoření výběrového dotazu.

Seznam běžně používaných klauzulí SQL:

Klauzule SQL

Akce

Povinné ?

SELECT

Uvádí seznam polí obsahujících požadovaná data.

Ano

FROM

Uvádí seznam tabulek obsahujících pole uvedená v klauzuli SELECT.

Ano

WHERE

Slouží k zadání kritérií pole, která musí každý záznam splnit, aby byl zahrnut do výsledků.

Ne

ORDER BY

Určuje způsob řazení výsledků.

Ne

GROUP BY

V příkazu SQL obsahujícím agregační funkce uvádí seznam polí, která nejsou sumarizována v klauzuli SELECT.

Pouze pokud taková pole existují.

HAVING

V příkazu SQL obsahujícím agregační funkce určuje podmínky, které platí pro pole sumarizovaná příkazem SELECT.

Ne

Každá klauzule SQL se skládá z lexikálních jednotek. Následuje seznam běžných typů lexikálních jednotek SQL.

Lexikální jednotka SQL

Definice

Příklad

identifikátor

Název použitý k identifikaci databázového objektu, například název pole

[E-mailová adresa] a Firma

operátor

Klíčové slovo, které představuje nebo mění akci

AS

konstanta

Hodnota, která se nemění, například číslo nebo hodnota Null

42

výraz

Kombinace identifikátorů, operátorů, konstant a funkcí, která je vyhodnocena jako jediná hodnota

>= Produkty.[Jednotková cena]

Začátek stránky

Přizpůsobení klauzule SELECT

Vlastní

Příklad

Chcete zobrazit jen navzájem odlišné hodnoty.

Použijte klíčové slovo DISTINCT v klauzuli SELECT.

Jestliže například zákazníci pocházejí z několika různých poboček a jejich telefonní čísla se proto můžou opakovat, můžete vyloučit opakování telefonních čísel pomocí takto upravené klauzule SELECT:

SELECT DISTINCT [txtCustomerPhone] 

Chcete změnit způsob zobrazení identifikátoru v datovém listu a zlepšit tím čitelnost.

Použijte v klauzuli SELECT operátor AS (operátor je klíčové slovo, které vyjadřuje akci nebo akci mění) s aliasem pole. Alias pole je název, který přiřadíte k poli, aby se výsledky daly lépe číst.

SELECT [txtCustPhone] AS [Customer Phone]

Přizpůsobení klauzule FROM

Vlastní

Příklad

V příkazu SELECT je možné použít alias tabulky nebo jiný název, který tabulce přiřadíte ve výběrovém příkazu. Alias tabulky je užitečný v případě, kdy je název zdroje dat dlouhý, zejména pokud v různých tabulkách existuje více polí se stejným názvem.

Výběr dat ze dvou polí, která mají stejný název – ID, první pochází z tabulky tblCustomer a druhé z tabulky tblOrder:

SELECT [tblCustomer].[ID], 
[tblOrder].[ID]

Použijte operátor AS pro definování aliasů tabulek v klauzuli FROM:

FROM [tblCustomer] AS [C], 
[tblOrder] AS [O]

Pak můžete tyto aliasy tabulky použít v klauzuli SELECT následujícím způsobem:

SELECT [C].[ID], 
[O].[ID]

Spojení používejte ke kombinaci párů záznamů ze dvou datových zdrojů do jednoho výsledku nebo pro určení, zda mají být do výsledku zahrnuty záznamy z kterékoli tabulky, pokud neexistují žádné odpovídající záznamy v související tabulce.

Spojte tabulky, aby dotaz sloučil záznamy z tabulek a aby byly vyloučeny záznamy z kterékoli tabulky, které nemají odpovídající záznam ve druhé tabulce.:

Klauzule FROM může vypadat takto:

FROM [tblCustomer] 
INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

O použití spojení

Existují dva typy spojení: vnitřní a vnější. Častěji se v dotazech objevuje vnitřní spojení. Při spuštění dotazu s vnitřním spojením výsledek dotazu zobrazuje jen záznamy se společnou hodnotou v obou spojených tabulkách.

Vnější spojení určují, jestli mají být zahrnutá data, pokud neexistuje společná hodnota. Vnější spojení jsou směrová, což znamená, že můžete rozhodnout, zda zahrnout všechny záznamy z prvního zdroje dat ve spojení (nazývá se levé spojení) nebo jestli zahrnout všechny záznamy z druhého zdroje dat ve spojení (nazývá se pravé spojení). Syntaxe vnějšího spojení vypadá takto:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Přečtěte si podrobnější informace o používání spojení v dotazech.

Začátek stránky

Přizpůsobení klauzule WHERE

Klauzule WHERE zahrnuje kritéria, která pomáhají omezit počet záznamů vrácených dotazech. Podívejte se na příklady kritérií v dotazech a princip jejich činnosti.

Jako ukázku přizpůsobení základní klauzule WHERE použijeme omezení počtu výsledků v dotazu. Dejme tomu, že chcete zjistit telefonní číslo zákazníka, ale pamatujete si jenom jeho příjmení – Bagel. V této ukázce jsou příjmení uložena v poli LastName, proto klauzule WHERE bude vypadat takto:

WHERE [LastName]='Bagel'

Klauzuli WHERE lze použít také pro kombinování zdrojů dat pro sloupce, jejichž data si odpovídají, ale mají různé datové typy. To se hodí, protože spojení mezi poli s různými datovými typy nemůžete vytvořit. Použijte jedno pole jako kritérium pro pole jiné, tentokrát s klíčovým slovem LIKE. Například pro načtení dat z tabulek Majetek a Zaměstnanci, u kterých typ majetku v poli typu majetku tabulky Majetek obsahuje číslo 3 v poli Množství tabulky Zaměstnanci, bude klauzule WHERE vypadat takto:

WHERE field1 LIKE field2

Důležité :  Pokud je pole použité v klauzuli WHERE spolu s agregační funkcí, nelze pro něj určit kritéria. Namísto toho lze pomocí klauzule HAVING určit kritéria pro agregovaná pole.

Začátek stránky

Přizpůsobení dotazu pomocí operátoru UNION

Operátor UNION používejte pro vytvoření kombinovaného zobrazení výsledků z několika podobných výběrových dotazů. Předpokládejme například, že máte tabulku s názvem Products a jinou tabulku s názvem Services. V obou tabulkách jsou tři pole: výhradní nabídka produktu či služby, cena, dostupnost záruky. Přestože tabulka Products obsahuje informace o záruce na produkty a tabulka Services informace o záruce na služby, základní informace jsou stejné. Tato tři pole ze dvou tabulek můžete zkombinovat pomocí sjednocovacího dotazu:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

Když tento dotaz spustíte, jsou data z každé sady odpovídajících polí zkombinovaná do jednoho výstupního pole. Jestliže mají být ve výstupu duplicitní záznamy (vyskytující se v obou tabulkách), použijte operátor ALL.

Poznámka :  Příkaz Select musí mít stejný počet výstupních polí, stejné pořadí polí a stejné nebo kompatibilní datové typy. Ve sjednocovacích dotazech jsou číselné a textové datové typy považovány za kompatibilní.

Více informací o sjednocovacích dotazech najdete v článku o používání sjednocovacího dotazu k zobrazení jednoho výsledku více dotazů.

Začátek stránky

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

Děkujeme vám za zpětnou vazbu.

×