Dnes je: 20. května 2012
| MySQL tutorial (část 3) - Práce s daty |
|
Získání dat se řídí syntaxi SQL, proto zde nebudu dělat základní SQL dotazy. Možná, že někdy v budoucnu udělám tutoriál na SQL, ale na netu toho je plno, takže mě to připadá zbytečné. Takže jen pár zajimavých dotazů.
DatumPří hledání není potřeba zadávat další převodní funkce.
mysql> SELECT last_name, first_name, birth FROM president
-> WHERE birth < '1750-1-1';
+------------+------------+------------+
| last_name | first_name | birth |
+------------+------------+------------+
| Washington | George | 1732-02-22 |
| Adams | John | 1735-10-30 |
| Jefferson | Thomas | 1743-04-13 |
+------------+------------+------------+
3 rows in set (0.01 sec)
NULLJe nedefinovaná hodnota, tudíž ji nelze sni porovnávat.
mysql> SELECT NULL < 0, NULL = 0, NULL <> 0, NULL > 0;
+----------+----------+-----------+----------+
| NULL < 0 | NULL = 0 | NULL <> 0 | NULL > 0 |
+----------+----------+-----------+----------+
| NULL | NULL | NULL | NULL |
+----------+----------+-----------+----------+
1 row in set (0.00 sec)
mysql> SELECT NULL = NULL, NULL <> NULL;
+-------------+--------------+
| NULL = NULL | NULL <> NULL |
+-------------+--------------+
| NULL | NULL |
+-------------+--------------+
1 row in set (0.00 sec)
Použití NULL v podmínce
mysql> SELECT last_name, first_name, suffix
-> FROM president WHERE suffix IS NOT NULL;
+-----------+------------+--------+
| last_name | first_name | suffix |
+-----------+------------+--------+
| Carter | James E. | Jr. |
+-----------+------------+--------+
1 row in set (0.00 sec)
Příklad jak třídit dle sloupce, který obsahuje hodnotu NULL. Podmínka IF přiřadí hodnotu 0 nebo 1 v závislosti, jestli sloupec death je NULL či nikoli.
Proto je NULL na začátku a až potom sestupně tříděné datumy prezidentů.
mysql> SELECT last_name, first_name, death FROM president
-> ORDER BY IF(death IS NULL,0,1), death DESC;
+------------+---------------+------------+
| last_name | first_name | death |
+------------+---------------+------------+
| Clinton | William J. | NULL |
| Bush | George H.W. | NULL |
| Carter | James E. | NULL |
| Bush | George W. | NULL |
| Ford | Gerald R. | 2006-12-26 |
| Reagan | Ronald W. | 2004-06-05 |
| Nixon | Richard M. | 1994-04-22 |
...
| Adams | John | 1826-07-04 |
| Washington | George | 1799-12-14 |
+------------+---------------+------------+
LIMITJe-li výsledný report dlouhý a vás zajimá například posledních 5 záznamů, přidejte klauzuli LIMIT.
mysql> SELECT last_name, first_name, birth FROM president
-> ORDER BY birth LIMIT 5;
+------------+------------+------------+
| last_name | first_name | birth |
+------------+------------+------------+
| Washington | George | 1732-02-22 |
| Adams | John | 1735-10-30 |
| Jefferson | Thomas | 1743-04-13 |
| Madison | James | 1751-03-16 |
| Monroe | James | 1758-04-28 |
+------------+------------+------------+
Výpis posledních 5-ti záznamů z 42, seřazených od posledního.
RANDVyběr náhodného záznamu.
mysql> SELECT last_name, first_name FROM president
-> ORDER BY RAND() LIMIT 1;
+-----------+------------+
| last_name | first_name |
+-----------+------------+
| Van Buren | Martin |
+-----------+------------+
1 row in set (0.00 sec)
Samozřejmně jsou k dispozici i příkazy pro třídení, matematické operace, práce s textovými řetězci, různé druhy join atd. tabulky, indexy, view, partitioning atd
To vše jsou věci týkající se SQL, ke kterým se třeba později vrátím.
Mě v tuto chvíli zajímá administrace nebo jiné zajimavé vlastnosti MySQL
|
Partnerské internetové stránky:
www.oracledba.cz www.asktom.cz www.tomas-solar.cz