× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

MySQL – 5. lekcia

[ http://programujte.com/profil/20356-martin-gulac/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/75-martin-zak/ ]Google [ :?rel=author ]       31. 1. 2006       29 935×

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.

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006012902-mysql-5-lekcia/ ].