V dnešnej lekcii:
* poradie výstupu dát
* vyhľadávanie textu
* obmedzenie počtu záznamov na výstupe
* vylúčenie duplikovaných záznamov
Poradie výstupu dát
S našimi uloženými záznamami sa dá ešte ďalej pracovať a to tak, že môžeme záznamy rôzne zoskupovať. Používa sa k tomu funkcia ORDER BY.Syntaxa:
ORDER BY nejaky_stlpec DESC;
DESC je nastaviteľný parameter a znamená to „vráť záznam v zostupnom poradí“.
Naša tabuľka programovanie má len dva záznamy, tak ju doplníme, aby sa nám s ňou lepšie pracovalo.
1)
mysql> INSERT INTO programovanie VALUES(
-> 'sessions',
-> 'SQL',
-> 'Meta tagy',
-> '2006-01-29',
-> '');
Odpoveď servera:
Query OK, 1 row affected (0.02 sec)
2)
mysql> INSERT INTO programovanie VALUES(
-> 'PHP5',
-> 'INSERT',
-> 'Tag BODY',
-> '2006-01-29',
-> '');
Odpoveď servera:
Query OK, 1 row affected (0.01 sec)
3)
mysql> INSERT INTO programovanie VALUES(
-> '$premena',
-> 'WHERE',
-> 'Tag P',
-> '2006-01-29',
-> '');
Odpoveď servera:
Query OK, 1 row affected (0.00 sec)
Naša tabuľka programovanie by mala vyzerať asi takto:
mysql> select*from programovanie;
Odpoveď servera:
+---------------------+----------+----------------+------------+----+
| php | mysql | html | datum | ID |
+---------------------+----------+----------------+------------+----+
| Programovanie v PHP | Databázy | Tvorba stránok | 2005-12-11 | 1 |
| Programovanie v PHP | Databázy | Tvorba stránok | 2005-12-11 | 2 |
| sessions | SQL | Meta tagy | 2006-01-29 | 4 |
| PHP5 | INSERT | Tag BODY | 2006-01-29 | 5 |
| $premena | WHERE | Tag P | 2006-01-29 | 6 |
+---------------------+----------+----------------+------------+----+
5 rows in set (0.00 sec)
Takže teraz si vypíšeme obsah stĺpca php vzostupne.
mysql> SELECT php FROM programovanie ORDER BY php;
Odpoveď servera:
+---------------------+
| php |
+---------------------+
| $premena |
| PHP5 |
| Programovanie v PHP |
| Programovanie v PHP |
| sessions |
+---------------------+
5 rows in set (0.00 sec)
A teraz si vyskúšame použiť záznamy zoradené v poradí zostupnom.
mysql> SELECT php FROM programovanie ORDER BY php DESC;
Odpoveď servera:
+---------------------+
| php |
+---------------------+
| sessions |
| Programovanie v PHP |
| Programovanie v PHP |
| PHP5 |
| $premena |
+---------------------+
5 rows in set (0.02 sec)
Vyhľadávanie textu
Určite sa nám stane, že budeme potrebovať vypísať z našej tabuľky dáta na základe nejakého slova prípadne textu. Pre tento prípad sa používa funkcia LIKE. Pri zadávaní vzoru nemusíme rozlišovať malé a veľké písmená.Syntaxe je :
SELECT * FROM meno_tabulky WHERE nejaky_stlpec LIKE “%vzor%“;
Vzor predstavuje:
Vzor Popis
%vzor Vráti všetky stĺpce končiace sa slovom “vzor“
vzor% Vráti všetky stĺpce začínajúce sa slovom “vzor“
%vzor% Vráti všetky stĺpce, v ktorých sa kdekoľvek vyskytuje slovo “vzor“
__vzor Vráti všetky stĺpce s dvoma akýmkoľvek znakmi, za nimi nasleduje slovo
“vzor“
__ Akékoľvek dva znaky. (2 podtržítka)
_____ Akýchkoľvek 5 znakov.(5 podtržítiek)
Teraz si vypíšeme všetky dáta zo stĺpcov mysql a html, kde v stĺpci mysql sa nachádza písmeno „E“.
mysql> SELECT mysql,html FROM programovanie WHERE mysql LIKE "%E%";
Odpoveď servera:
+--------+----------+
| mysql | html |
+--------+----------+
| INSERT | Tag BODY |
| WHERE | Tag P |
+--------+----------+
2 rows in set (0.02 sec)
A teraz si pre zmenu skúsime vybrať všetko z tabuľky programovanie, kde v stĺpci mysql bude písmeno „T“ na konci alebo v stĺpci php bude začínať písmeno „p“.
mysql> SELECT*FROM programovanie WHERE mysql LIKE "%T" OR php LIKE "%s";
Odpoveď servera:
+----------+--------+-----------+------------+----+
| php | mysql | html | datum | ID |
+----------+--------+-----------+------------+----+
| sessions | SQL | Meta tagy | 2006-01-29 | 4 |
| PHP5 | INSERT | Tag BODY | 2006-01-29 | 5 |
+----------+--------+-----------+------------+----+
2 rows in set (0.00 sec)
Skúsme si vypísať všetky stĺpce, kde v stĺpci mysql bude obsahovať slovo 5 písmen.
mysql> SELECT*FROM programovanie WHERE mysql LIKE "_____";
Odpoveď servera:
+----------+-------+-------+------------+----+
| php | mysql | html | datum | ID |
+----------+-------+-------+------------+----+
| $premena | WHERE | Tag P | 2006-01-29 | 6 |
+----------+-------+-------+------------+----+
1 row in set (0.00 sec)
Obmedzenie počtu záznamov na výstupe
Niekedy sa nám môže stať, že budeme pracovať s veľkým množstvom záznamov a budeme musieť ich výstup obmedziť. K tomu nám slúži funkcia LIMIT.Syntaxa:
SELECT * FROM meno_tabulky LIMIT n;
Kde „n“ predstavuje číselné množstvo záznamu.My si teraz vyberiem všetko z našej tabuľky programovanie a obmedzíme výstup na 3.
mysql> SELECT*FROM programovanie LIMIT 3;
Odpoveď servera:
+---------------------+----------+----------------+------------+----+
| php | mysql | html | datum | ID |
+---------------------+----------+----------------+------------+----+
| Programovanie v PHP | Databázy | Tvorba stránok | 2005-12-11 | 1 |
| Programovanie v PHP | Databázy | Tvorba stránok | 2005-12-11 | 2 |
| sessions | SQL | Meta tagy | 2006-01-29 | 4 |
+---------------------+----------+----------------+------------+----+
3 rows in set (0.00 sec)
Tu takisto môžeme využiť zoradenie zostupné ako aj vzostupné.
mysql> SELECT*FROM programovanie ORDER BY ID DESC LIMIT 3;
Odpoveď servera:
+----------+--------+-----------+------------+----+
| php | mysql | html | datum | ID |
+----------+--------+-----------+------------+----+
| $premena | WHERE | Tag P | 2006-01-29 | 6 |
| PHP5 | INSERT | Tag BODY | 2006-01-29 | 5 |
| sessions | SQL | Meta tagy | 2006-01-29 | 4 |
+----------+--------+-----------+------------+----+
3 rows in set (0.00 sec)
Vylúčenie duplikovaných záznamov
Niekedy sa nám stane, že naše záznamy budú obsahovať rovnaké záznamy a my budeme potrebovať vylúčiť duplikované záznamy pri výpisu obsahu. Na to nám slúži funkcia DISTINCT.Syntaxa:
DISTINCT nejaky_stlpec;
Nakoľko naša tabuľka programovanie obsahuje 2 rovnaké záznamy, tak my si tento príklad názorne ukážeme.
mysql> SELECT DISTINCT php FROM programovanie;
Odpoveď servera:
+---------------------+
| php |
+---------------------+
| Programovanie v PHP |
| sessions |
| PHP5 |
| $premena |
+---------------------+
4 rows in set (0.00 sec)
V ďalšom dieli si ukážeme práce s viacerými tabuľkami, naučíme sa doplňovať štruktúru tabuľky a mnoho ďalších užitočných vecí ohľadom databázového programovania.
Úloha číslo 4
- Vytvorťe si novú tabuľku zamestnanci
- Vytvorťe v nej tieto polia: Typ, Zárobok, Mesto a ID.
- Kde typ bude typu VARCHAR(20), zarobok bude typu INT(10), mesto bude VARCHAR(20) a ID bude typu INT s funkciou AUTO_INCREMENT a bude aj primárny kľuč.
- Vložte do tabuľky aspoň 5 záznamov
- Vyskúšajte si zoskupovanie dát, vyhľadávanie textu so všetkými možnosťami
- Využite pritom aj funkciu LIMIT a DISTINCT v prípade, že budete mať nejaké rovnaké záznamy.