Dnes budeme prokračovať k seriáli o MySQL popisom príkazu SELECT. Príkaz SELECT je jeden z najčastejšie používaných príkazov v databáze MySQL, pretože na ňom spočíva celá ťarcha zodpovednosti pri exporte dát z databázy a následom odovzdávaní do výstupu, prípadne nejakej aplikácii. Slúži teda na vyťahovanie dát z tabuľky s rôznymi podmienkami a parametrami.
SELECT však dokáže viac, napr. počítať:
+--------+ | 16*8-3 | +--------+ | 125 | +--------+
Taktiež ho môžete využiť pre výpočet primernej hodnoty. Pripojte sa k databáze „adresar“: USE adresar; a zadajte príkaz:
SELECT AVG(id) FROM osoby; | |
+---------+ | AVG(id) | +---------+ | 3.0000 | +---------+
Tak sme vypočítali primernú hodnotu id v tabuľke „osoby“. MySQL disponuje množstvom funkcií pre výpočty, taktiež môžete používať bitové a logické operátory. Tomuto sa budeme venovať v niektorom ďalších dielov, pretože tieto výpočty zatiaľ príliš nevyužijeme, bolo to len také malé odbočenie. Ak by niekto predsa len chcel vedieť viac, stačí sa pozrieť do manuálu.
Ako som už napísal, príkaz SELECT má veľmi široké využitie. Výber jednotlivých stĺpcov i výber s podmienkou sme si ukázali v minulom dieli. Čo však, ak chceme vybrať záznamy, ktoré v danom stĺpci obsahujú nejaký reťazec? Na to musíme využiť operátok LIKE, ktorý má podobnú funkciu, ako operátor =, ale rozdiel tu predsa je a ten si ukážeme teraz:
SELECT * FROM osoby WHERE meno LIKE ‚Peter‘; | |
+----+-------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+-------+------------+-----------------+ | 1 | Peter | Nový | 1972-10-12 | | 3 | Peter | Kováč | 1984-01-08 | +----+-------+------------+-----------------+
Ak by sme miesto operátora LIKE použili operátor = (rovný), dosiahli by sme rovnaký výpis. Sila operátoru LIKE spočíva v tom, že nemusíte zadávať celé reťazce, ale iba ich časti, čo sa využíva hlavne vo vyhľadávačoch. Stačí, ak do apostrofov zadáte časť reťazca, ktorú hľadáte vo výsledkoch a zvyšok reťazca nahradíte znakom ‚%‘. Tento znak nahrádza akýkoľvek reťazec, pričom ho môžete umiestniť pred časť hľadaného reťazca, za neho alebo aj pred aj za neho. Od jeho použitia závisí, aký výpis dostanete:
SELECT * FROM osoby WHERE meno LIKE ‚j%‘; | |
+----+-------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+-------+------------+-----------------+ | 2 | Ján | Kováč | 1964-08-10 | | 4 | Jozef | Hrach | 1978-12-18 | +----+-------+------------+-----------------+
Týmto príkazom sme vybrali všetky záznamy, u ktorých je splnená podmienka, že „meno“ začína písmenom „j“ (upozorňujem, že toto vyhľadávanie je case-insensitive, teda „J“=“j“). Ak by sme chceli vybrať všetky záznamy, ktoré obsahujú v mene na konci písmeno „n“, urobili by sme to takto:
SELECT * FROM osoby WHERE meno LIKE ‚%n‘; | |
+----+-------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+-------+------------+-----------------+ | 2 | Ján | Kováč | 1964-08-10 | | 5 | Anton | Marec | 1975-03-16 | +----+-------+------------+-----------------+
Týmto sme si ukázali, ako vyberať záznamy, ktoré majú na konci alebo na začiatku nejaký reťazec. Môžeme však zadať podmienku, aby boli vybraté záznamy, ktoré obsahujú určitý reťazec hocikde. Vtedy stačí pridať znak ‚%‘ pred aj za vyhľadávaný reťazec. Tento spôsob zahŕňa aj umiestnenie reťazca na začiatku a na konci, pretože znak ‚%‘ môže prestavovať aj prázdny reťazec. Ak teda chceme vyhľadať všetky záznamy, ktoré obsahujú reťazec ‚ov‘ v priezvisku, urobíme tak nasledovne:
SELECT * FROM osoby WHERE priezvisko LIKE ‚%ov%‘; | |
+----+-------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+-------+------------+-----------------+ | 1 | Peter | Nový | 1972-10-12 | | 2 | Ján | Kováč | 1964-08-10 | | 3 | Peter | Kováč | 1984-01-08 | +----+-------+------------+-----------------+
Ďalším často využívaným parametrom príkazu SELECT je LIMIT. Tento slúži na obmedzenie počtu vyberaných dát v tabuľke. Používa sa napríklad vtedy, keď potrebujeme vybrať určitý počet záznamov v kombinácii s nejakou podmienkou. Zápis vyzerá tak, že za slovo LIMIT musíte napísať číslo, ktoré predstavuje žiadaný počet záznamov:
SELECT * FROM osoby LIMIT 2; | |
+----+-------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+-------+------------+-----------------+ | 1 | Peter | Nový | 1972-10-12 | | 2 | Ján | Kováč | 1964-08-10 | +----+-------+------------+-----------------+
Týmto sme vybrali dva záznamy z tabuľky. Toto nám príliš nepomôže, musíme využiť kombináciu s podmienkou, čo nám dáva viac možností. Napríklad keď chceme vybrať iba jeden záznam, ktorý má v priezvisku hodnotu ‚Kováč‘:
SELECT * FROM osoby WHERE priezvisko=’Kováč‘ LIMIT 1; | |
+----+------+------------+-----------------+ | id | meno | priezvisko | datum_narodenia | +----+------+------------+-----------------+ | 2 | Ján | Kováč | 1964-08-10 | +----+------+------------+-----------------+
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.