Späť na blog

Prehľad dopytov v MySQL

Prehľad dopytov v MySQL

Udržateľnosť v podnikaní je bez správnej správy údajov náročná. Vybudovanie dobre definovaného systému je nevyhnutné na riadenie interných a externých operácií. Podrobný prehľad o obchodných údajoch pomáha pochopiť celkový pracovný postup a merať výkonnosť. Používanie databáz navyše šetrí čas a umožňuje bezproblémový prístup k informáciám.

Čo je to databáza?

A Databáza je organizovaný systém používaný na bezpečné ukladanie informácií. Ponúka kategorizáciu a umožňuje vytváranie tabuliek na triedenie podobných druhov položiek do jednej skupiny. Tabuľky poskytujú možnosti na zobrazenie informácií vo viacerých riadkoch a stĺpcoch. V dôsledku toho sa zlepšuje kvalita a konzistentnosť údajov. Okrem úložiska a jednoduchého prístupu zohrávajú databázy významnú úlohu pri ochrane súkromia a zabezpečení systémov. Či už ad hoc, alebo ako súčasť procesu zakódovaného do aplikácie, získavanie údajov je jedným z najdôležitejších aspektov správy databáz.

A Dopyt v relačnom DMS je akýkoľvek príkaz používaný na získanie údajov z tabuľky. SELECT príkazy sa takmer vždy používajú v dopytoch v Structured Query Language (SQL). Existuje niekoľko metód na získanie informácií z databázy. Vývojári vo všeobecnosti uprednostňujú možnosť príkazového riadka, pretože je rýchla a efektívna. Umožňuje bezproblémové odosielanie dopytov.

V tejto príručke vás zoznámime s MySQL a povieme si, ako pracovať s dopytmi v MySQL. Začnime!

Predpoklady

Na absolvovanie tohto návodu budete potrebovať nasledovné:

Krok 1 — Vytvorenie a nastavenie databázy

Predtým, ako začneme a napíšeme náš prvý SQL dopyt, musíme vytvoriť databázu a pridať do nej tabuľky. Potom tabuľky naplníme vzorovými údajmi. Práca s databázami vám pomôže pochopiť základné nastavenie a dodá vám istotu pri práci s dopytmi.

Praktické skúsenosti sú najefektívnejším spôsobom, ako si vybudovať koncepty a pochopiť dôležitosť databáz. V tejto príručke vás prevedieme používaním databáz a ich významom pri riešení reálnych problémov. Pozrime sa na scenár, aby sme pochopili, ako môžu databázy pomôcť organizovať záznamy štruktúrovaným spôsobom.

Scenár: Vytvoríme databázu, v ktorej skupina vysokoškolákov odchádza na dovolenku osláviť svoje narodeniny. Pred odchodom na dovolenku plánujú účasť v priateľskej plaveckej súťaži. Každý kamarát v skupine si tiež naplánuje zoznam úloh a aktivít, aby bol ich výlet vzrušujúci a príjemný.

Najprv otvorte MySQL ako používateľ root:

Potom vytvorte databázu spustením nasledujúceho príkazu:

Ďalej použijeme našu databázu pomocou nasledujúceho príkazu:

Potom v našej databáze vytvoríme tabuľky. Prvú tabuľku pomenujte ako celebration. Naša tabuľka bude mať stĺpce pre mená našich kamarátov (name), turnaje, ktoré vyhrali (wins) a tiež stĺpec pre ich najlepší čas (time):

Potom našu tabuľku naplníme údajmi:

Potom v našej databáze vytvorte ďalšiu tabuľku na ukladanie informácií o ich obľúbených narodeninových aktivitách. Vytvoríme tabuľku s názvom vacation a bude mať nasledujúce stĺpce:

Zoznam

Detail

name:

Uloží meno každého priateľa.

birthdate:

Sleduje dátum narodenia každého jednotlivca.

activity:

Uchováva záznam o ich obľúbenej aktivite.

Destinácia:

Ukladá informácie o obľúbenej destinácii každého jednotlivca.

meal:

Sleduje obľúbené jedlo jednotlivca.

Naplňte tabuľku údajmi:

Teraz ste dokončili nastavenie svojej databázy.

Krok 2 — Začíname s príkazmi SELECT

Dopyty v SQL zvyčajne začínajú s SELECT. Používa sa v dopytoch na určenie toho, ktoré stĺpce v tabuľke sa majú vrátiť s výsledkami. Dopyt musí tiež vždy obsahovať FROM, ktorý sa používa na určenie tabuľky, na ktorú sa bude dopytovať príkaz.

Dopyty majú nasledujúcu syntax:

Použijeme syntax dopytu na vrátenie stĺpca meal z tabuľky vacation:

Náš výstup bude nasledujúci:

Môžete tiež vybrať viacero stĺpcov tak, že ich oddelíte čiarkou:

Výstup:

Môžete tiež použiť asterisk (*), ak chcete reprezentovať všetky stĺpce v tabuľke:

Výstup:

Ak chcete filtrovať záznamy, ktoré spĺňajú zadanú podmienku, použite WHERE. Riadky, ktoré nespĺňajú zadanú podmienku, sú z výsledkov vylúčené. Klauzula WHERE používa nasledujúcu syntax:

Je to porovnávací operátor, ktorý definuje, ako sa má špecifikovaný stĺpec porovnať s hodnotou. Medzi bežné porovnávacie operátory SQL patria:

Operátor

Použitie

=

Rovnosť

!=

Nerovnosť

<

Menej ako

>

Viac ako

<=

Menej alebo rovné

>=

Viac alebo rovné

BETWEEN

Testuje, či hodnota leží v danom rozsahu.

IN

Testuje, či je hodnota riadku obsiahnutá v množine zadaných hodnôt.

EXISTS

Testuje, či riadok existuje

LIKE

Testuje, či hodnota zodpovedá zadanému reťazcu

IS NULL

Testuje nulové hodnoty (NULL)

IS NOT NULL

Testuje všetky hodnoty okrem NULL

Ak by ste chceli nájsť obľúbenú destináciu pre Aisha, mohli by ste použiť dopyt nižšie:

Dopyt potom vráti:

SQL podporuje používanie zástupných znakov, ktoré sú obzvlášť užitočné v WHERE klauzulách. Znaky percenta ( %) označujú nulu alebo viac neznámych znakov, zatiaľ čo podčiarkovníky ( _) označujú jeden neznámy znak. Tieto sú užitočné, ak chcete nájsť konkrétny záznam v tabuľke, ale nie ste si ním istí.

Napríklad, ak ste zabudli obľúbenú destináciu priateľa a vedeli ste len písmeno, ktorým začína, napríklad “m.” Názov destinácie môžete nájsť pomocou nasledujúceho dopytu:

Dopyt vráti:

Pri práci s databázami sa môžete stretnúť so stĺpcami alebo tabuľkami s relatívne dlhými alebo ťažko čitateľnými názvami. V týchto prípadoch môžete názvy urobiť čitateľnejšími pomocou kľúčového slova AS na vytvorenie aliasu. Aliasy vytvorené pomocou AS sú platné len počas trvania dopytu, pre ktorý boli vytvorené:

Krok 3 — Úvod do agregačných funkcií

Pri práci s dátami nechcete vždy vidieť samotné dáta. Radšej by ste mali informácie o dátach. Spustením dopytu SELECT môžete interpretovať alebo spúšťať výpočty nad vašimi dátami pomocou syntaxe SQL. Tieto sa označujú ako agregačné funkcie.

Funkcia COUNT spočíta a vráti počet riadkov, ktoré spĺňajú špecifický súbor kritérií. Napríklad, ak chcete vedieť, koľko priateľov uprednostňuje cestu na Maldivy, môžete použiť nasledujúci dopyt:

Vrátia sa nasledujúce výsledky:

MIN sa používa na nájdenie najmenšej hodnoty v špecifikovanom stĺpci:

Dopyt vypíše:

MAX sa používa na nájdenie najväčšej číselnej hodnoty v danom stĺpci:

Očakávaný výstup je:

Obe funkcie MIN a MAX sa dajú použiť na číselné aj abecedné údaje. Pri použití na stĺpec reťazcových hodnôt funkcia MIN vráti prvú hodnotu podľa abecedy.

Funkcia MIN vráti prvú hodnotu podľa abecedy:

Tu je ukážka výstupu:

Funkcia MAX vráti poslednú hodnotu podľa abecedy:

Výstup bude nasledovný:

Krok 4 — Manipulácia s výstupmi dopytov

Ďalšou populárnou klauzulou, ktorá sa používa, je GROUP BY klauzula. Používa sa pri vykonávaní agregačnej funkcie nad jedným stĺpcom, ale vo vzťahu k zodpovedajúcim hodnotám v inom:

Výstup bude:

Na zoradenie výsledkov dopytu použite ORDER BY klauzulu. Číselné hodnoty sa predvolene zoraďujú vzostupne, zatiaľ čo textové hodnoty sa zoraďujú abecedne. Dopyt nižšie uvádza stĺpce name a birthdate , ale zoraďuje výsledky podľa birthdate:

Výstup bude nasledovný:

Výstup je vo vzostupnom poradí. Ak ho chcete zoradiť v zostupnom poradí, ukončite dopyt slovom DESC:

Pozrite sa na výstup:

Klauzula HAVING bola pridaná do SQL, aby poskytovala podobnú funkčnosť ako klauzula WHERE, pričom je zároveň kompatibilná s agregačnými funkciami. Rozdiel medzi týmito dvoma klauzulami je v tom, že WHERE slúži na odkazovanie na jednotlivé záznamy a HAVING odkazuje na skupinové záznamy. Z tohto dôvodu musí byť klauzula GROUP BY prítomná vždy, keď sa používa klauzula HAVING:

Dopyt vráti výstup:

Počet COUNT je u všetkých 1, pretože žiadni dvaja priatelia nemajú radi rovnakú aktivitu.

Krok 5 — Dopytovanie nad viacerými tabuľkami

Klauzula JOIN sa môže použiť vo výsledku dopytu na spojenie riadkov z dvoch alebo viacerých tabuliek. Dosahuje to vyhľadaním súvisiaceho stĺpca medzi tabuľkami a príslušným zoradením výstupu.

SELECT príkazy, ktoré obsahujú klauzulu JOIN, sa riadia nasledujúcou syntaxou:

Ak by ste chceli kúpiť každému zo svojich priateľov trofej za ich wins počas swimming na ich birthdays, mohli by ste vytvoriť dopyt, ktorý spojí obe tabuľky, aby vám pomohol nájsť všetky požadované informácie pomocou jediného dopytu:

Výstup bude:

Toto je vnútorná JOIN klauzula. Je to preto, že vyberá všetky záznamy, ktoré majú zhodné hodnoty v oboch tabuľkách, a vypisuje ich do výslednej sady. Záznamy, ktoré nezodpovedajú dopytu, nie sú zahrnuté. Do našich tabuliek môžeme pridať nový riadok, ktorý nezodpovedá žiadnemu záznamu:

Potom znova spustite príkaz SELECT s klauzulou JOIN:

Pretože tabuľka celebration nemá žiadny záznam pre Petra a tabuľka vacation nemá žiadny záznam pre Ellu, tieto záznamy chýbajú.

Všetky záznamy z jednej z tabuliek môžeme vrátiť pomocou vonkajšej klauzuly JOIN. Môže to byť buď LEFT JOIN alebo RIGHT JOIN. LEFT JOIN vracia všetky záznamy z ľavej tabuľky a iba zhodné záznamy z pravej tabuľky. Ľavá tabuľka v kontexte vonkajších spojení je tá, na ktorú odkazuje klauzula FROM, a pravá tabuľka je akákoľvek tabuľka uvedená za príkazom JOIN.

Spustite dopyt znova, ale použite klauzulu LEFT JOIN:

Príkaz vráti všetky záznamy z ľavej tabuľky ( celebration) aj v prípade, že nemá zodpovedajúci záznam v pravej tabuľke. Ak v pravej tabuľke neexistuje zhodný záznam, vráti sa ako NULL:

Toto je teraz klauzula RIGHT JOIN:

Vrátené budú všetky hodnoty z pravej tabuľky (vacation). Pretože Petrov birthdate je zaznamenaný v pravej tabuľke a nie v ľavej tabuľke, stĺpce name a wins vrátia v týchto riadkoch NULL hodnoty:

Môžete použiť klauzulu UNION namiesto klauzuly JOIN na dopytovanie záznamov z viacerých tabuliek. Operátor UNION sa líši od klauzuly JOIN v tom, že kombinuje výsledky dvoch príkazov SELECT do jedného stĺpca, namiesto toho, aby vypisoval výsledky z viacerých tabuliek ako jedinečné stĺpce pomocou jediného príkazu SELECT.

Tento dopyt môžete spustiť na ilustráciu:

Dopyt odstráni duplicitné záznamy. Toto je predvolené správanie operátora UNION:

Ak chcete vrátiť všetky záznamy (vrátane duplikátov), použite operátor UNION ALL:

Výstup:

Poddopyty sú ďalšou metódou na dopytovanie sa viacerých tabuliek. Poddopyty sú dopyty, ktoré sú vložené do iného dopytu (známe aj ako vnútorné alebo vnorené dopyty). Sú užitočné, keď chcete porovnať výsledky dopytu s výsledkami samostatnej agregovanej funkcie.

Použijeme príklad, v ktorom sa pokúsime zistiť, ktorý priateľ vyhral viac plaveckých turnajov ako Ella. Namiesto zisťovania, koľko zápasov Ella vyhrala, a následného spustenia ďalšieho dopytu na zistenie, kto vyhral viac zápasov, môžete oboje vypočítať pomocou jediného dopytu:

Dopyt vráti:

Ak by ste chceli vziať svojich priateľov na prekvapivú dovolenku, môžete použiť dopyt na zistenie, kto má najviac výhier, a vrátiť ich destináciu:

Dopyt vráti:

Tento príkaz obsahuje poddopyt v rámci poddopytu.

Záver

Generovanie dopytov je jednou z najbežnejších úloh pri správe databáz. Existuje niekoľko nástrojov na správu databáz, ako napríklad phpMyAdmin a pgAdmin, ktoré môžete použiť na prácu s dopytmi a vizualizáciu ich výsledkov. Príkaz SELECT z príkazového riadku je však najpreferovanejšou voľbou vďaka jeho jednoduchému použitiu a vynikajúcej kontrole.

Okrem toho existuje mnoho návodov o databázach, ktoré môžete preskúmať na našom blogu:

Príjemnú prácu s počítačom!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.