SQL - update, insert, delete: Rozdiel medzi revíziami
d |
d |
||
Riadok 59: | Riadok 59: | ||
Tabuľka city po vložení nových miest (sú vypísané len slovenské mestá) | Tabuľka city po vložení nových miest (sú vypísané len slovenské mestá) | ||
− | [[Súbor:sql insert1.png|center|framed]] | + | [[Súbor:sql insert1.png|center|framed|Výpis slovenských miest po vložení nových údajov do tabuľky city]] |
==UPDATE== | ==UPDATE== |
Verzia zo dňa a času 17:40, 9. január 2011
Medzi ďalšie príkazy zo skupiny DML patria aj UPDATE, INSERT a DELETE. Sú to príkazy na modifikáciu, vkladanie a mazanie údajov z tabuliek. V tjeto časti budeme pracovať s databázou WORLD.
INSERT
Príkaz INSERT slúži na vkladanie údajov do tabuľky. Kompletná syntax príkazu INSERT je nasledovná[1]:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
alebo
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
alebo
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
kde:
- LOW_PRIORITY - vloženie údajov sa vykoná až keď k tabuľke nebudú pripojení žiadni iní používatelia.
- HIGH_PRIORITY - v prípade, že má server nastavené vkladanie údajov v nízkej priorite (LOW_PRIORITY) je toto nastavenie zrušené. Špecifikátory LOW_PRIORITY a HIGH_PRIORITY sa dajú použiť len pri úložných systémoch MyISAM, MEMORY, a MERGE [2]..
- DELAYED - pri vkladaní sa nečaká na odpoveď servera. Požiadavky na vloženie údajov sú poslané do fronty, ktorá sa priebežne spracováva[3]. Oneskorené vloženie funguje len s úložnými systémami MyISAM, MEMORY, ARCHIVE, a BLACKHOLE[2].
- IGNORE - pri vkladaní viacerých záznamov v jednej dávke sa pri výskyte chyby pokračuje ďalším vložením namiesto ukončenia dávky a vrátenia chyby
Úloha: Do tabuľky city vložte údaje o meste Trenčín.
Riešenie:
Vkladané údaje budú nasledovné:
- Názov:Trenčín
- Kód krajiny:SVK
- Kraj:Trenčiansky
- Počet obyvateľov: 56 215 [4]
INSERT INTO city (name, CountryCode, District, Population)
VALUES ("Trenčín","SVK","Trenčiansky",56215)
Riešnie 2-hým spôsobom:
INSERT INTO city
SET name="Prievidza", CountryCode="SVK",
District="Trenčiansky", Population=52070
Vložme do tabuľky city ešte jeden (chybný) údaj, ktorý budeme v nasledujúcom príklade mazať:
INSERT INTO city (name, CountryCode, District, Population)
VALUES ("Kocúrkovo","SVK","Kocúrkovský",3)
Poznámka: pri vkladaní neuvádzame atribút ID, pretože ten má vlastnosť auto_increment. Tabuľka city po vložení nových miest (sú vypísané len slovenské mestá)
UPDATE
Príkaz UPDATE slúži na aktuálizáciu údajov v tabuľke. Kompletná syntax príkazu UPDATE je nasledovná[5]:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
kde:
- table_reference - názov tabuľky, ktorej údaje chceme modifikovať
- where_condition - obmedzenie množiny údajov, ktoré chceme modifikovať
Nepovinné časti príkazu UPDATE
- LOW_PRIORITY - modifikácia sa vykoná len v prípade, ak s tabuľkou nepracujú iní používatelia. Tento mechanizmus je zabezpečený pomocou zamykania na nízkej úrovni.
- IGNORE - pri modifikácii viacerých údajov sa môže stať, že pri niektorom kroku nastane chyba. V štandardnom nastavení sa operácia zruší. So špecifikátorom IGNORE na pokračuje ďalej s ďalšou zmenou.
Úloha: V tabuľke city aktualizujte počet obyvateľov Bratislavy podľa aktuálneho stavu[6]. Aktuálny počet obyvateľov k 31. decembru 2009 je 431 061.
Riešenie:
UPDATE city SET Population=431061 WHERE name LIKE "Bratislava"
Úloha: V tabuľke city aktualizujte počet obyvateľov všetkých slovenských miest. Vo všetkých mestách zvýšte počet obytateľov o 1000.
Riešenie:
ID | Name | CountryCode | District | Population |
---|---|---|---|---|
3210 | Košice | SVK | Východné Slovensko | 241874 |
3211 | Prešov | SVK | Východné Slovensko | 93977 |
3209 | Bratislava | SVK | Bratislava | 431061 |
UPDATE city SET Population=Population+1000 WHERE CountryCode="SVK"
ID | Name | CountryCode | District | Population |
---|---|---|---|---|
3210 | Košice | SVK | Východné Slovensko | 242874 |
3211 | Prešov | SVK | Východné Slovensko | 94977 |
3209 | Bratislava | SVK | Bratislava | 432061 |
DELETE
Príkaz DELETE slúži na mazanie údajov z tabuliek. Kompletná syntax príkazu DELETE je nasledovná[7]:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
alebo v prípade, že chceme zmazať viacero tabuliek naraz:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
kde:
- LOW_PRIORITY a IGNORE majú rovanký význam ako v predchádzajúcich prípadoch.
- QUICK - dá sa použiť len pre MyISAM tabuľky, kde pri mazaní sa ihneď neprepočítajú indexové stĺpce. Týmto sa zrýchli mazanie údajov.
- ORDER BY - pri mazaní viacerých údajov sa určí poradie mazania údajov.
Úloha: Z tabuľky city zmažte mesto Kocúrkovo
DELETE FROM city
WHERE name LIKE "Kocúrkovo"
Zdroje a odkazy
- ↑ insert (mysql) http://dev.mysql.com/doc/refman/5.5/en/insert.html
- ↑ 2,0 2,1 Storage engines - http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html
- ↑ insert delayed http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html
- ↑ Trenčín - http://www.trencin.sk/16804
- ↑ update (mysql) http://dev.mysql.com/doc/refman/5.5/en/update.html
- ↑ Bratislava - počet obyvateľov: http://www.bratislava.sk/vismo/dokumenty2.asp?id_org=700000&id=78458&p1=97431
- ↑ delete(mysql) http://dev.mysql.com/doc/refman/5.5/en/delete.html