V naÜej ∩alÜej prßci s MySQL sa zameriame na pokraΦovanie u₧ zaΦatej rozpravy o tabu╛kßch a naznaΦφme si ∩alÜie mo₧nosti, ktorΘ nßm MySQL pon·ka pri manipulßcii s nimi.
V minulej - Ütvrtej Φasti nßÜho spoznßvacieho serißlu sme si vytvorili naÜu prv· tabu╛ku, teda jej Ütrukt·ru. EÜte na ·vod sa pristavme pri tejto Ütrukt·re a mo₧nosti jej nastavenia.
Pri vytvßranφ tabu╛ky m⌠₧eme okrem zßkladn²ch parametrov pri ka₧dej polo₧ke nastavi¥ nieko╛ko ∩alÜφch vlastnostφ, ktorΘ nßm bli₧Üie Üpecifikuj· t·to polo₧ku, rsp. ju jednoznaΦne definuj·. Najviac pou₧φvanou vlastnos¥ou je NOT NULL. Takto definovanß polo₧ka nem⌠₧e obsahova¥ prßzdnu hodnotu. ╧alÜou pou₧φvanou vlastnos¥ou je PRIMARY KEY. Tßto nßm udßva, ktorß polo₧ka bude primßrnym k╛·Φom.
Ukß₧me si ich pou₧itie na praktickom prφklade:
mysql> create table authors1
-> (id int(11) NOT NULL PRIMARY KEY,
-> autor varchar(90),
-> mail varchar(60),
-> telefon varchar(30))
-> ;
Vytvorili sme si tabu╛ku authors1, ktorß sa skladß z nasledovn²ch polo₧iek: id (id autora), autor (meno), mail (e-mailova adresa) a telefon. Zßrove≥ sme zadefinovali pomocou vlastnosti NOT NULL polo₧ku id nenulov· a okrem toho sa bude chova¥ ako primßrny k╛·Φ. Potvrdenie tabu╛ky nßm indikuje nasledovn² dial≤g:
Query OK, 0 rows affected (0.00 sec)
Ak si chceme pozrie¥ Ütrukt·ru naÜej novej tabu╛ky, nie je niΦ jednoduchÜie. Pou₧ijeme prφkaz DESCRIBE. V²sledok bude asi nasledovn²:
mysql> DESCRIBE authors1;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | | PRI | 0 | |
| autor | varchar(90 ) | YES | | NULL | |
| mail | varchar(60) | YES | | NULL | |
| telefon | varchar(30) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Ak chceme nßhodou nejak· tabu╛ku vymaza¥, je potrebnΘ pou₧i¥ prφkaz DROP. Formßt prφkazu bude teda:
DROP TABLE table;
Ak teda chceme zmaza¥ tabu╛ku video10, pou₧ijeme nasledovn² prφkaz:
mysql> DROP TABLE video10;
Query OK, 0 rows affected (0.06 sec)
Nezabudnite na to, ₧e po pou₧itφ tohto prφkazu je tabu╛ka nenßvratne stratenß, tak₧e opatrne.
Po∩me si u₧ koneΦne naplni¥ naÜu tabu╛ku nejak²mi ·dajmi, lebo tabuliek sme si u₧ vytvorili u₧ nieko╛ko ale zatia╛ s· prßzdne. Na pridßvanie ·dajov do tabuliek sl·₧i v SQL prφkaz INSERT INTO. Formßt prφkazu vypadß teda nasledovne:
INSERT INTO meno_tabulky VALUES (
hodnota_1_polozky,
hodnota_2_polozky,
hodnota_3_polozky,
.
.
hodnota_n_polozky)
Sk·sme to teraz na ostro a napl≥me si naÜu tabu╛ku authors1 nejak²mi ·dajmi:
mysql> INSERT INTO authors1 VALUES (
-> 1,
-> "Jan Kratky",
-> "jan.kratky@domena.sk"
-> "55698541");
Tabu╛ku sme sφce naplnili, ale interpret nßm vypφsal chybu. Pri vkladanφ ·dajov do tabu╛ky som sa nßhodou "sekol" a zabudol som dolni¥ jednu Φiarku (4.riadok). Dopadlo to asi takto:
ERROR 1058: Column count doesn't match value count
T²mto by som aj vßs rßd upozornil na mo₧nos¥ v²skytu tak²chto ch²b. V tak²chto situßcißch je potrebnΘ zachova¥ si chladn· hlavu prekontrolovat zdrojov² text a "na¥uka¥" prφkaz znova, ale u₧ bez ch²b.
Sprßvny zßpis bude teda nasledovn²:
mysql> INSERT INTO authors1 VALUES (
-> 1,
-> "Jan Kratky",
-> "jan.kratky@domena.sk",
-> "55698541");
Query OK, 1 row affected (0.05 sec)
Na zßver si eÜte ukß₧eme ako si zobrazφme naÜu tabu╛ku authors1 u₧ v kompletnom stave, teda ai so zßznamom.
Pou₧ijeme na to prφkaz SELECT, ktorΘmu budeme na bud·ce venova¥ jednu cel· Φas¥. UrΦite si to zasl·₧i.
mysql> SELECT * from authors1;
a v²sledok bude nasledovn²:
+----+------------+----------------------+----------+
| id | autor | mail | telefon |
+----+------------+----------------------+----------+
| 1 | Jan Kratky | jan.kratky@domena.sk | 55698541 |
+----+------------+----------------------+----------+
1 row in set (0.11 sec)