Zpět na blog

Přehled dotazů v MySQL

Přehled dotazů v MySQL

Udržitelnost v podnikání je bez řádné správy dat obtížná. Vybudování jasně definovaného systému je zásadní pro řízení interních i externích operací. Detailní vhled do obchodních dat pomáhá pochopit celkový pracovní postup a měřit výkonnost. Používání databází navíc šetří čas a umožňuje snadný přístup k informacím.

Co je to databáze?

A databáze je organizovaný systém sloužící k bezpečnému ukládání informací. Nabízí kategorizaci a umožňuje vytváření tabulek pro třídění podobných druhů položek do jedné skupiny. Tabulky poskytují možnosti výpisu informací v několika řádcích a sloupcích. V důsledku toho se zvyšuje kvalita a konzistence dat. Kromě ukládání a snadného přístupu hrají databáze významnou roli při ochraně soukromí a zabezpečení systémů. Získávání dat, ať už ad hoc, nebo jako součást procesu zakódovaného do aplikace, je jedním z nejkritičtějších aspektů správy databází.

A dotaz v relačních DMS je jakýkoli příkaz používaný k získávání dat z tabulky. SELECT příkazy se téměř vždy používají v Structured Query Language (SQL) dotazech. Existuje několik metod, jak získat informace z databáze. Vývojáři obecně dávají přednost možnosti příkazového řádku, protože je rychlá a efektivní. Umožňuje bezproblémové odesílání dotazů.

V této příručce vás seznámíme s MySQL a probereme, jak pracovat s dotazy v MySQL. Začněme!

Požadavky

Chcete-li postupovat podle tohoto návodu, budete potřebovat následující:

Krok 1 — Vytvoření a nastavení databáze

Než začneme a napíšeme náš první SQL dotaz, musíme vytvořit databázi a přidat do ní tabulky. Poté tabulky naplníme ukázkovými daty. Práce s databázemi vám pomůže pochopit základní nastavení a dodá vám jistotu při práci s dotazy.

Praktické zkušenosti jsou nejúčinnějším způsobem, jak si vybudovat představu a pochopit význam databází. V této příručce vás provedeme používáním databází a jejich významem pro řešení reálných problémů. Podívejme se na scénář, abychom pochopili, jak mohou databáze pomoci organizovat záznamy strukturovaným způsobem.

Scénář: Vytvoříme databázi, kde skupina vysokoškoláků odjíždí na dovolenou oslavit své narozeniny. Před odjezdem na dovolenou se plánují zúčastnit přátelských plaveckých závodů. Každý kamarád ve skupině si také naplánuje seznam úkolů a aktivit, aby byl jejich výlet napínavý a zábavný.

Nejprve otevřete MySQL jako uživatel root:

Poté vytvořte databázi spuštěním následujícího příkazu:

Dále použijeme naši databázi pomocí následujícího příkazu:

Poté v naší databázi vytvoříme tabulky. První tabulku pojmenujte jako celebration. Naše tabulka bude mít sloupce pro jména našich přátel (name), turnaje, které vyhráli (wins) a také sloupec pro jejich nejlepší čas (time):

Poté naši tabulku naplníme daty:

Poté v naší databázi vytvořte další tabulku pro uložení informací o jejich oblíbených narozeninových aktivitách. Vytvoříme tabulku s názvem vacation a bude mít následující sloupce:

Seznam

Podrobnosti

name:

Uloží jméno každého přítele.

birthdate:

Sleduje datum narození každého jednotlivce.

activity:

Uchovává záznam o jejich oblíbené aktivitě.

Destination:

Ukládá informace o oblíbené destinaci každého jednotlivce.

meal:

Sleduje oblíbené jídlo daného jednotlivce.

Naplňte tabulku daty:

Nyní jste dokončili nastavení databáze.

Krok 2 — Začínáme s příkazy SELECT

Dotazy v SQL obvykle začínají s SELECT. Používá se v dotazech k určení, které sloupce v tabulce mají být vráceny s výsledky. Dotaz musí také vždy obsahovat FROM, který se používá k určení tabulky, na kterou se bude dotaz dotazovat.

Dotazy se řídí následující syntaxí:

Použijeme syntaxi dotazu k vrácení sloupce meal z tabulky vacation:

Náš výstup bude následující:

Můžete také vybrat více sloupců tak, že je oddělíte čárkou:

Výstup:

Můžete také použít hvězdičku (*), pokud chcete reprezentovat všechny sloupce v tabulce:

Výstup:

Pokud chcete filtrovat záznamy, které splňují zadanou podmínku, použijte WHERE. Řádky, které nesplňují zadanou podmínku, jsou z výsledků vyřazeny. Klauzule WHERE používá následující syntaxi:

Jedná se o porovnávací operátor, který definuje, jak má být zadaný sloupec porovnán s hodnotou. Mezi běžné porovnávací operátory SQL patří:

Operátor

Použití

=

Rovnost

!=

Nerovnost

<

Menší než

>

Větší než

<=

Menší než nebo rovno

>=

Větší než nebo rovno

BETWEEN

Testuje, zda hodnota leží v daném rozsahu.

IN

Testuje, zda je hodnota řádku obsažena v sadě zadaných hodnot.

EXISTS

Testuje, zda řádek existuje

LIKE

Testuje, zda hodnota odpovídá zadanému řetězci

IS NULL

Testuje na hodnoty null

IS NOT NULL

Testuje na všechny hodnoty kromě NULL

Pokud byste chtěli najít oblíbenou destinaci Aishy, mohli byste použít níže uvedený dotaz:

Dotaz poté vrátí:

SQL podporuje použití zástupných znaků, které jsou obzvláště užitečné v WHERE klauzulích. Znaky procenta ( %) označují nulu nebo více neznámých znaků, zatímco podtržítka ( _) označují jeden neznámý znak. Tyto znaky jsou užitečné, pokud chcete najít konkrétní záznam v tabulce, ale nejste si jím jisti.

Pokud jste například zapomněli oblíbenou destinaci svého přítele a věděli jste pouze písmeno, kterým začíná, například “m”, můžete název destinace najít pomocí následujícího dotazu:

Dotaz vrátí:

Při práci s databázemi se můžete setkat se sloupci nebo tabulkami s relativně dlouhými nebo obtížně čitelnými názvy. V těchto případech můžete názvy zpřehlednit použitím klíčového slova AS pro vytvoření aliasu. Aliasy vytvořené pomocí AS jsou platné pouze po dobu trvání dotazu, pro který byly vytvořeny:

Krok 3 — Úvod do agregačních funkcí

Při práci s daty nechcete vždy vidět samotná data. Raději byste měli informace o těchto datech. Zadáním dotazu SELECT můžete interpretovat nebo provádět výpočty nad vašimi daty pomocí syntaxe SQL. Tyto funkce se označují jako agregační funkce.

Funkce COUNT spočítá a vrátí počet řádků, které splňují určitou sadu kritérií. Pokud například chcete vědět, kolik přátel dává přednost cestě na Maldives, můžete použít následující dotaz:

Budou vráceny následující výsledky:

MIN se používá k nalezení nejmenší hodnoty v zadaném sloupci:

Dotaz vypíše:

MAX se používá k nalezení největší číselné hodnoty v daném sloupci:

Očekávaný výstup je:

Obě funkce MIN a MAX lze použít na číselná i abecední data. Při aplikaci na sloupec řetězcových hodnot vrátí funkce MIN první hodnotu v abecedním pořadí.

Funkce MIN vrátí první hodnotu v abecedním pořadí:

Zde je ukázka výstupu:

Funkce MAX vrátí poslední hodnotu v abecedním pořadí:

Výstup bude vypadat takto:

Krok 4 — Manipulace s výstupy dotazů

Další populární klauzule, která se používá, je GROUP BY . Používá se při provádění agregační funkce nad jedním sloupcem, ale ve vztahu k odpovídajícím hodnotám v jiném:

Výstup bude:

Chcete-li seřadit výsledky dotazu, použijte klauzuli ORDER BY . Číselné hodnoty se ve výchozím nastavení řadí vzestupně, zatímco textové hodnoty se řadí abecedně. Níže uvedený dotaz vypisuje sloupce name a birthdate, ale výsledky řadí podle birthdate:

Výstup bude následující:

Výstup je ve vzestupném pořadí. Chcete-li jej seřadit sestupně, ukončete dotaz slovem DESC:

Podívejte se na výstup:

Klauzule HAVING byla do SQL přidána, aby poskytovala podobnou funkčnost jako klauzule WHERE, přičemž je zároveň kompatibilní s agregačními funkcemi. Rozdíl mezi těmito dvěma klauzulemi je v tom, že WHERE slouží k odkazování na jednotlivé záznamy a HAVING odkazuje na skupinové záznamy. Z tohoto důvodu musí být klauzule GROUP BY přítomna vždy, když je použita klauzule HAVING:

Dotaz vrátí výstup:

Hodnota COUNT je u všech 1, protože žádní dva přátelé nemají rádi stejnou aktivitu.

Krok 5 — Dotazování nad více tabulkami

Klauzuli JOIN lze použít ve výsledku dotazu ke spojení řádků ze dvou nebo více tabulek. Dosahuje toho vyhledáním souvisejícího sloupce mezi tabulkami a odpovídajícím seřazením výstupu.

SELECT příkazy, které obsahují klauzuli JOIN, se řídí níže uvedenou syntaxí:

Pokud byste chtěli každému ze svých přátel koupit trofej za jejich wins při plavání k jejich narozeninám, mohli byste vytvořit dotaz, který spojí obě tabulky a pomůže vám najít všechny požadované informace pomocí jediného dotazu:

Výstup bude:

Toto je vnitřní JOIN klauzule. Je to proto, že vybere všechny záznamy, které mají odpovídající hodnoty v obou tabulkách, a vypíše je do sady výsledků. Záznamy, které neodpovídají dotazu, nejsou zahrnuty. Do našich tabulek můžeme vložit nový řádek, který neodpovídá žádnému záznamu:

Poté znovu spusťte příkaz SELECT s klauzulí JOIN :

Protože tabulka celebration nemá žádný záznam pro Petra a tabulka vacation nemá žádný záznam pro Ellu, tyto záznamy chybí.

Všechny záznamy z jedné z tabulek můžeme vrátit pomocí vnější JOIN klauzule. Může se jednat buď o LEFT JOIN, nebo o RIGHT JOIN. Klauzule LEFT JOIN vrací všechny záznamy z levé tabulky a pouze odpovídající záznamy z pravé tabulky. Levá tabulka v kontextu vnějších spojení je ta, na kterou odkazuje klauzule FROM, a pravá tabulka je jakákoli tabulka uvedená za příkazem JOIN.

Spusťte dotaz znovu, ale použijte klauzuli LEFT JOIN :

Příkaz vrátí všechny záznamy z levé tabulky ( celebration) i v případě, že nemá odpovídající záznam v pravé tabulce. Pokud v pravé tabulce neexistuje odpovídající záznam, vrátí se jako NULL:

Toto je nyní klauzule RIGHT JOIN :

Vrátí se všechny hodnoty z pravé tabulky (vacation). Protože Peterovo birthdate je zaznamenán v pravé tabulce a nikoli v levé tabulce, pro sloupce name a wins se v těchto řádcích vrátí NULL hodnoty:

Můžete použít UNION klauzuli namísto JOIN pro dotazování na záznamy z více tabulek. Operátor UNION se liší od klauzule JOIN v tom, že kombinuje výsledky dvou příkazů SELECT do jednoho sloupce, namísto tisku výsledků z více tabulek jako jedinečných sloupců pomocí jediného příkazu SELECT.

Pro ilustraci můžete spustit tento dotaz:

Dotaz odstraní duplicitní záznamy. Toto je výchozí chování operátoru UNION :

Chcete-li vrátit všechny záznamy (včetně duplicit), použijte operátor UNION ALL :

Výstup:

Poddotazy jsou další metodou pro dotazování do více tabulek. Poddotazy jsou dotazy, které jsou vloženy do jiného dotazu (označované také jako vnitřní nebo vnořené dotazy). Ty jsou užitečné, pokud chcete porovnat výsledky dotazu s výsledky samostatné agregační funkce.

Použijeme příklad, kdy se snažíme zjistit, který přítel vyhrál více plaveckých turnajů než Ella. Namísto zjišťování, kolik zápasů Ella vyhrála, a následného spuštění dalšího dotazu, abyste zjistili, kdo vyhrál více her než ona, můžete obojí spočítat pomocí jediného dotazu:

Dotaz vrátí:

Pokud byste chtěli vzít své přátele na překvapivou dovolenou, můžete pomocí dotazu zjistit, kdo má nejvíce výher, a vrátit jejich destinaci:

Dotaz vrátí:

Tento příkaz obsahuje poddotaz uvnitř poddotazu.

Závěr

Generování dotazů je jedním z nejčastějších úkolů při správě databází. Existuje několik nástrojů pro správu databází, jako je phpMyAdmin a pgAdmin, které můžete použít k práci s dotazy a vizualizaci jejich výsledků. Příkaz SELECT z příkazové řádky je však nejpreferovanější volbou kvůli snadnému použití a vynikající kontrole.

Kromě toho existuje mnoho návodů o databázích, které můžete prozkoumat na našem blogu:

Příjemnou práci s počítačem!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.