Access SQL: základní koncepty, slovník a syntaxe
Applies ToAccess pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Pokud chcete načíst data z databáze, požádejte o data pomocí jazyk SQL (Structured Query Language) nebo SQL. SQL je počítačový jazyk, který se podobá angličtině, ale databázové programy tomu rozumí. Každý dotaz, který spustíte, používá SQL na pozadí.

Pochopení toho, jak SQL funguje, vám může pomoct vytvářet lepší dotazy a usnadnit vám pochopení, jak opravit dotaz, který nevrací požadované výsledky.

Toto je jeden ze sady článků o jazyku SQL v Accessu. Tento článek popisuje základní použití SQL k výběru dat a používá příklady k ilustraci syntaxe SQL.

V tomto článku

Co je SQL?

SQL je počítačový jazyk pro práci se sadami faktů a vztahy mezi nimi. Aplikace relačních databází, například Microsoft Office Access, používají k práci s daty SQL. Na rozdíl od mnoha počítačových jazyků není sql obtížné číst a pochopit, a to ani pro začátečníky. Stejně jako mnoho počítačových jazyků je i SQL mezinárodní standard, který jsou uznávány normalizačními orgány, jako jsou ISO a ANSI.

Sql používáte k popisu sad dat, které vám pomůžou odpovědět na otázky. Pokud používáte SQL, musíte použít správnou syntaxi. Syntaxe je sada pravidel, podle kterých jsou prvky jazyka správně kombinovány. Syntaxe SQL je založená na anglické syntaxi a používá mnoho stejných prvků jako syntaxe jazyka VBA (Visual Basic for Applications).

Například jednoduchý příkaz SQL, který načte seznam příjmení pro kontakty, jejichž křestní jméno je Mary, může vypadat takto:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Poznámka: SQL se nepoužívá jen pro manipulaci s daty, ale také pro vytváření a změny návrhu databázových objektů, jako jsou tabulky. Část SQL, která se používá k vytváření a změnám databázových objektů, se nazývá jazyk DDL (data-definition language). Toto téma nepopisuje DDL. Další informace najdete v článku Vytvoření nebo úprava tabulek nebo indexů pomocí dotazu definice dat.

Příkazy SELECT

Pokud chcete popsat sadu dat pomocí SQL, napíšete příkaz SELECT. Příkaz SELECT obsahuje úplný popis sady dat, které chcete získat z databáze. Patří k nim:

  • Jaké tabulky obsahují data.

  • Jak souvisí data z různých zdrojů.

  • Která pole nebo výpočty vytvoří data.

  • Kritéria, která se musí shodovat s daty, aby byla zahrnuta.

  • Zda a jak se mají výsledky seřadit.

Klauzule SQL

Podobně jako věta má příkaz SQL klauzule. Každá klauzule provádí funkci pro příkaz SQL. Některé klauzule jsou vyžadovány v příkazu SELECT. V následující tabulce jsou uvedeny nejběžnější klauzule SQL.

Klauzule SQL

Akce

Povinné

SELECT

Seznamy pole, která obsahují zajímavá data.

Ano

FROM

Seznamy tabulky, 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

Termíny SQL

Každá klauzule SQL se skládá z termínů , které jsou srovnatelné s slovními částmi. V následující tabulce jsou uvedeny typy termínů SQL.

Termín SQL

Srovnatelná část řeči

Definice

Příklad

Identifikátor

Podstatné jméno

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

Zákazníci. [Telefonní číslo]

Operátor

sloveso nebo příslovce

Klíčové slovo, které představuje akci nebo upravuje akci.

AS

Konstanta

Podstatné jméno

Hodnota, která se nezmění, například číslo nebo NULL.

42

Výraz

Adjektivum

Kombinace identifikátorů, operátorů, konstant a funkcí, která se vyhodnocuje na jednu hodnotu.

>= Produkty. [Jednotková cena]

Začátek stránky

Základní klauzule SQL: SELECT, FROM a WHERE

Příkaz SQL má obecnou podobu:

SELECT field_1FROM table_1WHERE criterion_1;

Poznámky: 

  • Access ignoruje konce řádků v příkazu SQL. Zvažte ale použití řádku pro každou klauzuli, která vám pomůže zlepšit čitelnost příkazů SQL pro sebe i pro ostatní.

  • Každý příkaz SELECT končí středníkem (;). Středník se může objevit na konci poslední klauzule nebo na řádku samostatně na konci příkazu SQL.

Příklad v Accessu

Následující příklad ukazuje, jak může vypadat příkaz SQL pro jednoduchý výběrový dotaz v Accessu:

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

1. Klauzule SELECT

2. Klauzule FROM

3. Klauzule WHERE

Tento příklad příkazu JAZYKa SQL obsahuje text "Vyberte data uložená v polích s názvy E-mailová adresa a Společnost z tabulky Kontakty, konkrétně ty záznamy, ve kterých je hodnota pole Město Praha.".

Podívejme se na příklad, jednu klauzuli po druhé, abychom zjistili, jak syntaxe SQL funguje.

Klauzule SELECT

SELECT [E-mail Address], Company

Toto je klauzule SELECT. Skládá se z operátoru (SELECT) následovaného dvěma identifikátory ([E-mailová adresa] a Společnost).

Pokud identifikátor obsahuje mezery nebo speciální znaky (například "E-mailová adresa"), musí být uzavřen v hranatých závorkách.

Klauzule SELECT nemusí říkat, které tabulky obsahují pole, a nemůže určit žádné podmínky, které musí splňovat data, která mají být zahrnuta.

Klauzule SELECT se vždy zobrazí před klauzulí FROM v příkazu SELECT.

Klauzule FROM

FROM Contacts

Toto je klauzule FROM. Skládá se z operátoru (FROM) následovaného identifikátorem (Kontakty).

Klauzule FROM neobsahuje seznam polí, která mají být vybrána.

Klauzule WHERE

WHERE City="Seattle"

Toto je klauzule WHERE. Skládá se z operátoru (WHERE) následovaného výrazem (City="Seattle").

Poznámka: Na rozdíl od klauzulí SELECT a FROM není klauzule WHERE povinným prvkem příkazu SELECT.

Mnoho akcí, které sql umožňuje, můžete provést pomocí klauzulí SELECT, FROM a WHERE. Další informace o tom, jak tyto klauzule používáte, najdete v těchto dalších článcích:

Začátek stránky

Řazení výsledků: ORDER BY

Podobně jako v Microsoft Excelu vám Access umožňuje řadit výsledky dotazu v datovém listu. Pomocí klauzule ORDER BY můžete také v dotazu určit, jak se mají výsledky při spuštění dotazu seřadit. Pokud použijete klauzuli ORDER BY, je to poslední klauzule v příkazu SQL.

Klauzule ORDER BY obsahuje seznam polí, která chcete použít k řazení, ve stejném pořadí, v jakém chcete použít operace řazení.

Předpokládejme například, že chcete výsledky seřadit jako první podle hodnoty pole Společnost v sestupném pořadí a (pokud existují záznamy se stejnou hodnotou pro Společnost) seřazené vedle hodnot v poli E-mailová adresa ve vzestupném pořadí. Klauzule ORDER BY by vypadala takto:

ORDER BY Company DESC, [E-mail Address]

Poznámka: Ve výchozím nastavení Access seřadí hodnoty ve vzestupném pořadí (A až Z, od nejmenšího po největší). K seřazení hodnot v sestupném pořadí použijte klíčové slovo DESC.

Další informace o klauzuli ORDER BY najdete v tématu Klauzule ORDER BY.

Začátek stránky

Práce se souhrnnými daty: GROUP BY a HAVING

Někdy chcete pracovat se souhrnnými daty, například celkovými prodeji za měsíc nebo nejdražšími položkami v inventáři. Uděláte to tak, že u pole v klauzuli SELECT použijete Agregační funkce. Pokud například chcete, aby dotaz zobrazoval počet e-mailových adres uvedených pro každou společnost, může klauzule SELECT vypadat takto:

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

Agregační funkce, které můžete použít, závisí na typu dat v poli nebo výrazu, který chcete použít. Další informace o dostupných agregačních funkcích najdete v článku Agregační funkce SQL.

Určení polí, která se nepoužívají v agregační funkci: Klauzule GROUP BY

Při použití agregačních funkcí je obvykle nutné vytvořit také klauzuli GROUP BY. Klauzule GROUP BY obsahuje seznam všech polí, na která nepoužíváte agregační funkci. Pokud použijete agregační funkce na všechna pole v dotazu, nemusíte vytvářet klauzuli GROUP BY.

Klauzule GROUP BY bezprostředně následuje za klauzulí WHERE nebo klauzulí FROM, pokud neexistuje žádná klauzule WHERE. Klauzule GROUP BY obsahuje seznam polí tak, jak se zobrazují v klauzuli SELECT.

Pokud například klauzule SELECT použije agregační funkci na [e-mailovou adresu], ale ne na společnost, bude klauzule GROUP BY vypadat takto:

GROUP BY Company

Další informace o klauzuli GROUP BY najdete v tématu KLAUZULE GROUP BY.

Omezení agregovaných hodnot pomocí kritérií skupiny: klauzule HAVING

Pokud chcete použít kritéria k omezení výsledků, ale pole, na které chcete kritéria použít, se používá v agregační funkci, nemůžete použít klauzuli WHERE. Místo toho použijete klauzuli HAVING. Klauzule HAVING funguje jako klauzule WHERE, ale používá se pro agregovaná data.

Předpokládejme například, že používáte funkci AVG (která vypočítá průměrnou hodnotu) s prvním polem v klauzuli SELECT:

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

Pokud chcete, aby dotaz omezil výsledky na základě hodnoty funkce COUNT, nemůžete pro toto pole v klauzuli WHERE použít kritéria. Místo toho vložíte kritéria do klauzule HAVING. Pokud například chcete, aby dotaz vracel řádky jenom v případě, že je ke společnosti přidruženo více e-mailových adres, může klauzule HAVING vypadat takto:

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

Poznámka: Dotaz může mít klauzuli WHERE a klauzuli HAVING – kritéria pro pole, která se nepoužívají v agregační funkci, přejdou do klauzule WHERE a kritéria pro pole používaná s agregačními funkcemi se nacházejí v klauzuli HAVING.

Další informace o klauzuli HAVING najdete v tématu Klauzule HAVING.

Začátek stránky

Kombinování výsledků dotazu: UNION

Pokud chcete zkontrolovat všechna data vrácená několika podobnými výběrové dotazy společně jako kombinovanou sadu, použijete operátor UNION.

Operátor UNION umožňuje zkombinovat dva příkazy SELECT do jednoho. Příkazy SELECT, které zkombinujete, 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. Při spuštění dotazu se data z každé sady odpovídajících polí zkombinují do jednoho výstupního pole, takže výstup dotazu má stejný počet polí jako každý příkaz select.

Poznámka: Pro účely sjednocovacího dotazu jsou datové typy Číslo a Text kompatibilní.

Při použití operátoru UNION můžete také určit, jestli mají výsledky dotazu obsahovat duplicitní řádky (pokud existují), pomocí klíčového slova ALL.

Základní syntaxe SQL pro sjednocovací dotaz, který kombinuje dva příkazy SELECT, je následující:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Předpokládejme například, že máte tabulku s názvem Produkty a jinou tabulku s názvem Služby. Obě tabulky obsahují pole, která obsahují název produktu nebo služby, cenu, záruku nebo dostupnost a informace o tom, jestli produkt nebo službu nabízíte výhradně. I když tabulka Products (Produkty) uchovává informace o záruce a tabulka Services stores (Služby) zaručuje informace, základní informace jsou stejné (bez ohledu na to, jestli konkrétní produkt nebo služba zahrnuje příslib kvality). Ke sloučení čtyř polí ze dvou tabulek můžete použít sjednocovací dotaz, například následující:

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

Další informace o tom, jak kombinovat příkazy SELECT pomocí operátoru UNION, najdete v tématu Kombinování výsledků několika výběrových dotazů pomocí sjednocovacího dotazu.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.