MySQL časť ôsma - príkaz SELECT(III)

V predchádzajúcich dvoch častiach sme si načrtli možnosti práce s príkazom SELECT v SQL. Dnes si konečne toto pojednávanie dokončíme a pokročíme o kus ďalej.

Vychádzajme z našej pokusnej tabuľky Authors2, na ktorej si popisujeme jednotlivé modifikácie príkazu SELECT. Ani dnes to nebude iné.

mysql> select * from authors2;
+----+--------+----------------+---------+------+
| id | autor  | mail           | telefon | vek  |
+----+--------+----------------+---------+------+
|  1 | Andrej | annn@dreeej.sk | 145879  |   25 |
|  2 | Jan    | jann@email.sk  | 1458796 |   29 |
|  3 | Marek  | frank@nic.sk   | 7458741 |   24 |
+----+--------+----------------+---------+------+
3 rows in set (0.00 sec)

Príkaz SELECT * FROM authors2 WHERE autor LIKE "Andrej";, ako sme si povedali minule, nám pomocou operátora LIKE vyberie z našej tabuľky všetky údaje z poľa "autor", ktoré zodpovedá reťazcu "Andrej".

mysql> SELECT * FROM authors2 WHERE autor LIKE "Andrej";
+----+--------+----------------+---------+------+
| id | autor  | mail           | telefon | vek  |
+----+--------+----------------+---------+------+
|  1 | Andrej | annn@dreeej.sk | 145879  |   25 |
+----+--------+----------------+---------+------+
1 row in set (0.06 sec)

Ak potrebujeme menej konkrétnu selekciu, môžeme použiť za operátorom LIKE znaky so špeciálnym významom. Jedná sa o znak percenta "%" a znak podčiarkovník "_". Znak percento nahradzuje ľubovoľnú skupinu písmen. A znak podčiarkovník nahrazuje jeden ľubovoľný znak. Ak napríklad chceme z našej tabuľky vybrať všetkých autorov, ktorým sa tel.číslo začína na číslice 145, použijeme nasledovný príkaz:

mysql> SELECT * FROM authors2 WHERE telefon LIKE "145%"
    -> ;
+----+--------+----------------+---------+------+
| id | autor  | mail           | telefon | vek  |
+----+--------+----------------+---------+------+
|  1 | Andrej | annn@dreeej.sk | 145879  |   25 |
|  2 | Jan    | jann@email.sk  | 1458796 |   29 |
+----+--------+----------------+---------+------+
2 rows in set (0.05 sec)

Operátor LIKE sme mohli použiť pri tejto číselnej hodnote (tel.číslo) z dôvodu toho, pretože pole telefon je charakteru varchar. Keby bolo charakteru int, museli by sme použiť "=".(Bližšie viď. minulá časť)

Jednotlivé podmienky je samozrejme možné medzi sebou kombinovať podľa ľubovôle a docieliť tým požadovaného efektu pri výbere jednotlivých údajov. Kombinovať ich môžeme pomocou logických spojok AND, OR, NOT. Môže sa Vám aj stať že to s tým kombinovaním preženiete a výsledok výberu bude nulový.

mysql> SELECT id,autor,vek FROM authors2 WHERE (vek > 24)
    -> AND (telefon LIKE "1_5");
Empty set (0.06 sec)

Tak ako sa to stalo mne :), ale poďme trošku ďalej a ukážme si ešte ako zotriedíme údaje v tabuľke. Skúsme teda najskôr podĺa abecedy zotriediť náš výpis autorov, pričom záznamy budú zoradené podľa mien (položky autor).

mysql> SELECT * FROM authors2 ORDER BY autor;
+----+--------+----------------+---------+------+
| id | autor  | mail           | telefon | vek  |
+----+--------+----------------+---------+------+
|  1 | Andrej | annn@dreeej.sk | 145879  |   25 |
|  2 | Jan    | jann@email.sk  | 1458796 |   29 |
|  3 | Marek  | frank@nic.sk   | 7458741 |   24 |
+----+--------+----------------+---------+------+
3 rows in set (0.66 sec)

Pokiaľ by sme chceli záznamy v tabuľke zotriediť opačným spôsobom (teda od Z do A) použijeme DESC. Teda:

mysql> SELECT * FROM authors2 ORDER BY autor DESC;
+----+--------+----------------+---------+------+
| id | autor  | mail           | telefon | vek  |
+----+--------+----------------+---------+------+
|  3 | Marek  | frank@nic.sk   | 7458741 |   24 |
|  2 | Jan    | jann@email.sk  | 1458796 |   29 |
|  1 | Andrej | annn@dreeej.sk | 145879  |   25 |
+----+--------+----------------+---------+------+
3 rows in set (0.00 sec)

Príkaz SELECT je skutočne veľmi rozsiahly, ale rozsah nášho seriálu nie je na jeho dôkladné vysvetlenie natoľko obšírny. Ďalšie príklady použitia SELECTu môžete nájsť v manuály na stránkach http://www.mysql.com.

Developer,
Stiahnuté z Developer.sk