Pokud vaše dotazy nepracují dost tvrdě, můžete přidat pár základních příkazů SQL, které vám pomůžou zaměřit se na výsledky. Podívejme se na několik typů příkazů SQL a klauzule nebo části, které můžete upravovat, abyste získali požadované výsledky.
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í pomocí operátoru UNION
Vytvoření příkazu Select
Příkaz SQL select má dvě až tři klauzule. Klauzule SELECT říká databázi, kde má data hledat, a žádá ji, aby vrátila konkrétní výsledek.
Poznámka
Příkazy SELECT vždy končí středníkem (;) buď na konci poslední klauzule, nebo na samostatném řádku na konci příkazu SQL.
Následující příkaz příkazu SELECT žádá Access, aby získal informace ze sloupců E-mailová adresa a Společnost z tabulky Kontakty, konkrétně odkud ve sloupci Město najde "Praha".
Výše uvedený dotaz má tři klauzule: SELECT, FROM a WHERE.
1. Klauzule SELECT obsahuje seznam sloupců obsahujících data, která chcete použít. Obsahuje operátor (SELECT), za kterým následují dva 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 zdrojovou tabulku. V tomto příkladu obsahuje operátor (FROM) následovaný identifikátorem (Contacts).
3. Klauzule WHERE je nepovinná. Příklad má operátor (WHERE), za kterým následuje výraz (City="Seattle").
Další informace o výběrových dotazech najdete v článku Vytvoření jednoduchého výběrového dotazu.
Tady je seznam běžných klauzulí SQL:
| Klauzule SQL | Funkce | Povinné? |
|---|---|---|
| SELECT | Obsahuje pole obsahující potřebná data. | Ano |
| FROM | Obsahuje tabulky obsahující pole uvedená v klauzuli SELECT. | Ano |
| WHERE | Určuje kritéria pole, která musí každý záznam splňovat, aby byl zahrnutý do výsledků. | Ne |
| SEŘADIT PODLE | Určuje, jak se mají výsledky seřadit. | Ne |
| GROUP BY | V příkazu SQL, který obsahuje agregační funkce, obsahuje seznam polí, jejichž souhrn není zahrnut v klauzuli SELECT. | Pouze pokud taková pole existují |
| HAVING | V příkazu SQL, který obsahuje agregační funkce, určuje podmínky, které platí pro pole, která jsou shrnuta v příkazu SELECT. | Ne |
Každou klauzuli SQL tvoří termíny. Tady je seznam některých běžných termínů SQL.
Přizpůsobení klauzule SELECT
| Přizpůsobení | Příklad |
|---|---|
| Pokud chcete zobrazit jenom rozdílné hodnoty. Použijte klíčové slovo DISTINCT v klauzuli SELECT. |
Pokud jsou třeba vaši zákazníci z několika různých poboček a někteří mají stejné telefonní číslo a vy chcete telefonní číslo zobrazit jenom jednou, bude klauzule SELECT vypadat takto:SELECT DISTINCT [txtCustomerPhone] |
| Změna způsobu zobrazení identifikátoru v zobrazení Datový list pro zlepšení čitelnosti Použijte operátor AS (klíčové slovo, které představuje akci nebo mění akci) se aliasem pole v klauzuli SELECT. Alias pole je název, který přiřadíte poli, aby byly výsledky srozumitelnější. |
SELECT [txtCustPhone] AS [Telefon zákazníka] |
Přizpůsobení klauzule FROM
| Přizpůsobení | Příklad |
|---|---|
| Můžete použít alias tabulky nebo jiný název, který přiřadíte tabulce v příkazu select. Alias tabulky je užitečný, pokud je název tabulky dlouhý, zejména v případě, že máte více polí se stejným názvem v různých tabulkách. | Výběr dat ze dvou polí se stejným názvem (například ID), přičemž první pole pochází z tabulky tblCustomer a druhé z tabulky tblOrder: SELECT [tblCustomer]. [ID], [tblOrder]. [ID] K definování aliasů tabulek v klauzuli FROM použijte operátor AS: FROM [tblCustomer] AS [C], [tblOrder] AS [O] Tyto aliasy tabulky pak můžete použít v klauzuli SELECT následujícím způsobem:SELECT [C]. [ID], [O]. [ID] |
| Pomocí spojení můžete kombinovat dvojice záznamů ze dvou zdrojů dat do jednoho výsledku, nebo určit, jestli se mají zahrnout záznamy z jedné nebo druhé tabulky, pokud v související tabulce neexistuje odpovídající záznam. Spojit tabulky tak, aby dotaz zkombinoval položky z tabulek a vyloučil položky, u kterých v druhé tabulce neexistuje odpovídající záznam |
Klauzule FROM může vypadat takto:FROM [tblCustomer] INNER JOIN [tblOrder] ON [tblCustomer]. [CustomerID]=[tblOrder]. [IDZákazníka] |
Používání spojení
Existují dva typy spojení, vnitřní a vnější. Vnitřní spojení jsou v dotazech běžnější. Když spustíte dotaz s vnitřním spojením, zobrazí se ve výsledku jenom ty položky, pro které v obou spojených tabulkách existují společné hodnoty.
Vnější spojení určují, zda se mají zahrnout data v případě, že neexistuje společná hodnota. Vnější spojení jsou směrová, což znamená, že můžete zadat, zda se mají zahrnout všechny záznamy z první tabulky zadané ve spojení (toto se nazývá levé spojení), nebo zda se mají zahrnout všechny záznamy z druhé tabulky ve spojení (toto se nazývá 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 toho, jak fungují.
Příkladem přizpůsobení základní klauzule WHERE je omezení výsledků dotazu. Předpokládejme, že chcete vyhledat telefonní číslo zákazníka a pamatujete si jenom jeho příjmení jako Novák. V tomto příkladu jsou příjmení uložená v poli Příjmení, takže syntaxe SQL bude vypadat takto:
WHERE [LastName]='Bagel'
Klauzuli WHERE můžete použít také ke kombinování zdrojů dat pro sloupce, které mají shodná data, ale různé datové typy. To je užitečné, protože spojení nejde vytvořit mezi poli, která mají různé datové typy. Jedno pole použijte jako kritérium pro druhé pole pomocí klíčového slova LIKE . Pokud chcete například použít data z tabulky Aktiva a tabulky Zaměstnanci pouze v případě, že typ aktiva v poli Typ aktiva v tabulce Aktiva má v tabulce Zaměstnanci číslo 3 v poli Množství, bude klauzule WHERE vypadat takto:
WHERE field1 LIKE field2
Důležité
Pro pole použité s agregační funkcí v klauzuli WHERE nelze zadat kritéria. 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ů. Vaše databáze například obsahuje tabulky Produkty a Služby a obě mají tři pole: Exkluzivní nabídka nebo Produkt nebo Služba, Cena, Záruka nebo Garance. I když tabulka Produkty obsahuje informace o záruce a tabulka Služby informace o záruce, základní informace zůstávají stejné. Pomocí sjednocovacího dotazu můžete sloučit tři pole z obou tabulek takto:
SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;
Po spuštění dotazu se data z jednotlivých sad odpovídajících polí zkombinují do jednoho výstupního pole. Chcete-li do výsledků zahrnout případné 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 kompatibilní datové typy Číslo a Text.
Další informace o sjednocovacích dotazech najdete v tématu Použití sjednocovacího dotazu k zobrazení jednotného výsledku z několika dotazů.