Image
7.6.2016 0 Comments

Databázy / 4. časť

Späť na úvod >> Späť na seriál

Už vieme, ako nainštalovať, spustiť a zastaviť MySQL server, ba vieme sa aj prihlásiť ako root a zmeniť si heslo, takže nám už nič nebráni, aby sme s ním začali pracovať. Ako sme už uviedli, na komunikáciu so serverom používame súbor SQL príkazov. Na zadávanie týchto príkazov môžeme použiť už známeho klienta MySQL Monitor (program mysql) alebo súbor pomocných programov. Ak sa chceme o možnostiach toho-ktorého pomocného programu dozvedieť viac, spustíme ho s parametrom –help alebo –h. V stručnej nápovedi zistíme základné parametre daného programu. Pre názornosť budeme príkazy pre klienta mysql označovať promptom mysql>, bez tohto promptu uvažujeme pomocné programy v prostredí príslušného operačného systému. Takisto budeme príkazy písať malými písmenami, lebo klient mysql akceptuje aj malé písmená.

Základné príkazy SQL
MySQL obsahuje množinu príkazov podľa normy SQL92, my však budene zatiaľ využívať iba základnú skupinu, ktorá je opísaná v tabuľke č. 1.

Príkaz

Opis

create table

vytvorenie tabuľky

drop table

zmazanie tabuľky

alter table

úprava štruktúry tabuľky

insert into

vloženie záznamu do tabuľky

update

úprava záznamu v tabuľke

delete

vymazanie záznamu v tabuľke

select

výpis z tabuľky

Z tabuľky je zrejmé, že na základnú činnosť so serverom postačuje sedem príkazov. Azda najdôležitejším príkazom je SELECT. Jednotlivé príkazy a ich možnosti si objasníme postupne, ako budeme vytvárať našu databázu.

Naša prvá databáza
Ako sme spomenuli, budeme pracovať s databázou KNIZNICA a s tabuľkami v nej uloženými. Vieme, že MySQL server po inštalácii obsahuje dve základné databázy – MYSQL a TEST. Preto musíme databázu KNIZNICA vytvoriť sami.
Na vytvorenie databázy použijeme program mysqladmin s voľbou create meno_databázy. Takže zadáme:
mysqladmin create kniznica

Aby sme sa presvedčili, či naozaj všetko prebehlo v poriadku, použijeme ďalší pomocný program
mysqlshow

kde na obrazovke uvidíme výpis jednotlivých databáz, vytvorených na našom serveri. Môžeme použiť aj klienta mysql, v ktorom zadáme príkaz pre klienta:
mysql> show databases;

Odpoveď servera na tento príkaz by mala byť taká ako na obr. č. 1:

Tabuľky
Teraz máme vytvorenú databázu KNIZNICA. Zatiaľ je prázdna, ale vieme, že bude obsahovať (dočasne iba dve) tabuľky ZANER a KNIHA. Tabuľka sa vytvorí príkazom:
create table meno_tabulky (položka1 typ_položky1, položka2 typ_položky2,...,položkan typ_položkyn)
kde meno_tabulky je konkrétne meno, napr. ZANER, a v zátvorkách sa uvádza meno položky a jej daný typ.

Tabuľka ZANER má iba dve položky – cis_odd, ktorá je typu int, a tematika, ktorá je typu varchar s počtom znakov do 20. Z konštruktívneho hľadiska je vhodné, aby prvá položka cis_odd bola zároveň primárnym kľúčom a aby mala autoinkrementačnú schopnosť. To znamená, aby sa vždy po pridaní nového záznamu automaticky zväčšila jej hodnota o 1.

Aby sme vytvorili tabuľku ZANER, spustíme klienta mysql s parametrom kniznica, čím sa automaticky nastavíme do prostredia databázy KNIZNICA. Odteraz príkazy, ktoré budeme zadávať, sa budú týkať databázy KNIZNICA a tabuliek v nej. Vytvorenie samotnej tabuľky vykonáme príkazom:
mysql > create table zaner (cis_odd int auto_increment primary key, tematika varchar(20));

Ak je riadok príkazu veľmi dlhý, stlačíme Enter a pokračujeme na novom riadku za šípkou. Spomeňme si, že príkaz klienta sa vykoná až po zadaní bodkočiarky a stlačení Enter.
Ak sme neurobili v zápise nijakú chybu, server potvrdí vykonanie príkazu hlásením Query OK, tak ako je to na obrázku č. 2:

Podobným spôsobom si vytvoríme aj tabuľku KNIHA. Polia tabuľky budú mať tieto názvy a typy, ako sú opísané v tab. č. 4-2:

Názov poľa

Typ poľa

id

int

nazov

varchar(40)

autor

varchar(30)

vydavatel

varchar(25)

cis_odd

int

cena

decimal(7,2)

poznamka

varchar(25)

Zadaním príkazu:

mysql > create table kniha (

          -> id int auto_increment primary key,

     -> nazov varchar(40),

     -> autor varchar(30),

     -> vydavatel varchar(25),

     -> cis_odd int,

          -> cena decimal(7,2),

 -> poznamka varchar(25));


sme vytvorili druhú tabuľku s názvom KNIHA.

Typ id int auto_increment a varchar už poznáme, typ decimal(7,2) znamená, že je to číselná hodnota na sedem miest, z čoho dve sú za desatinnou čiarkou (v počítačovom prostredí bodkou). Maximálna hodnota tohto výrazu je teda 99999,99, čo je, myslím, na cenu knihy postačujúce.

Aby sme sa presvedčili, že sme skutočne vytvorili tabuľku KNIHA, spustíme program:
mysqlshow kniznica

čím zobrazíme všetky tabuľky v databáze KNIZNICA.

Môžeme zadať príkaz pre klienta:
mysql > describe kniha;

Tak dostaneme štruktúru tabuľky, tak ako je na obr. č. 3:

Takýmto spôsobom  si môžeme overiť, či sme tabuľku nadefinovali správne.
Keby sme z akéhokoľvek dôvodu potrebovali tabuľku vymazať, použijeme príkaz:
mysql > drop table meno_tabuľky;

Po použití tohto príkazu je tabuľka nenávratne stratená, takže ho používajme s rozvahou!

Napĺňanie tabuliek

Ak sme úspešne vytvorili tabuľky, môžeme ich začať napĺňať vhodnými informáciami.
Na napĺňanie tabuliek sa používa príkaz INSERT INTO v takomto tvare:
insert into meno_tabuľky (meno_1_položky, meno_2_položky, meno_n_položky)

VALUES (hodnota_1_položky, hodnota_2_položky, ..., hodnota_n_položky)

Ak budeme dopĺňať položky v presnom poradí, tak ako sú nadefinované v tabuľke, nemusíme v zápise príkazu vypisovať názvy jednotlivých položiek pred slovom VALUES (=hodnoty). Tým si trochu zjednodušíme zápis.
Zadáme teda:
mysql> insert into zaner values (0, ‘poezia’);

Prečo sme na prvú pozíciu zadali nulu?
Keď sme tvorili tabuľku ZANER, určili sme, že stĺpec CIS_ODD bude mať autoinkrementačnú schopnosť. Preto nie je potrebné zadať do stĺpca CIS_ODD príslušné poradové číslo, napr. 1,2,3... Ak zadáme v každom pridaní záznamu pomocou insert into nulu, server sám za nás priradí prvé voľné poradové číslo. Keď zadávame pridanie ďalších záznamov, znova na prvú pozíciu zapíšeme nulu, teda:
mysql> insert into zaner values (0, ‘roman’);

Pripomínam, že reťazce sa zadávajú do apostrofov alebo do úvodzoviek. Keďže niektoré operačné systémy neuznávajú v textoch úvodzovky, my budeme používať univerzálnejší apostrof.

(Poznámka: Možno nás napadne, či môžeme zadávať textové reťazce s diakritikou. Odpoveď je trochu komplikovaná. Ak prostredie operačného systému umožňuje písať a zobrazovať znaky s diakritikou na obrazovke, môžeme túto možnosť využiť. Ale ak nemáme MySQL server preložený s podporou triedenia podľa národnej abecedy, dostaneme v príkaze SELECT niekedy nežiaducu odpoveď. Ako mi je známe, preklad samotného servera je možný iba v prostredí Linux, zatiaľ čo binárne súbory pre Windows nie sú skompilované s národnou podporou. Nie je to neriešiteľné, ale zatiaľ v týchto cvičných aplikáciách budeme používať texty bez diakritických znamienok.)

Ak sme nespravili žiadnu chybu, SQL server potvrdí vykonanie príkazu hlásením:
Query OK, 1 row affected (0.22 sec)

čo znamená asi toľko, že query – dopyt – bol správny, bol ovplyvnený jeden riadok a koľko času trvalo vykonanie tohto query. Takto doplníme aj ostatné záznamy do tabuľky ZANER:
mysql> insert into zaner values (0, ‘krimi’);

mysql> insert into zaner values (0, ‘detska lit.’);

mysql> insert into zaner values (0, ‘cestopis’);

mysql> insert into zaner values (0, ‘lit. faktu’);

mysql> insert into zaner values (0, ‘odborna lit.’);

Všimnime si, že sme nulu použili aj v ostatných zápisoch.

Vyhľadávanie záznamov
Ako sa presvedčíme, aké dáta máme uložené v tabuľke?

Na to použijeme príkaz SELECT.

Vieme, že úlohou príkazu SELECT je vybrať z danej tabuľky určité informácie na základe stanovených kritérií. Je to jeden z najmocnejších príkazov v SQL štruktúre. Jeho mnohým parametrom sa budeme postupne venovať, zatiaľ nám stačí vedieť najjednoduchší a zároveň najvšeobecnejší zápis:
mysql> select * from meno_tabuľky;

Select znamená výber, * znamená všetko, from odkiaľ a za meno_tabuľky dosadíme už konkrétne meno. V našom prípade príkaz select * from zaner znamená: vyber všetko z tabuľky ZANER a výsledok bude vyzerať tak ako na obrázku č. 4:

Mazanie záznamu
Na výmaz konkrétneho záznamu v určitej tabuľke sa používa príkaz:
delete from meno_tabuľky where podmienka

Podmienka nasledujúca za slovom WHERE určuje, ktorý záznam bude zmazaný. Ak ani jeden záznam nespĺňa podmienku, nijaká zmena sa nevykoná.
Keby sme teda chceli vymazať štvrtý riadok z tabuľky ZANER, príkaz by vyzeral asi takto:
mysql> delete from zaner where cis_odd = 4;

V prípade, že by sme rozhodovali podľa textového poľa TEMATIKA, podmienka by vyzerala takto:
mysql> delete from zaner where tematika = ‘detska lit.’;

Zmena záznamu

Na zmenu obsahu určitého záznamu sa používa príkaz UPDATE. Ten sme už raz použili, a to na zmenu hesla pre roota v tabuľke USER v databáze MYSQL (spomínate si?).
Syntaktický zápis príkazu update je:
update meno_tabuľky set položka = nová_hodnota where podmienka

Keby sme chceli upraviť šiesty záznam tabuľky ZANER na „faktografia“ namiesto „lit. faktu“, vykonali by sme to príkazom:
mysql> update zaner set tematika = ‘faktografia’ where cis_odd=6;

alebo

mysql> update zaner set tematika = ‘faktografia’ where tematika=’lit. faktu’;

Jeden aj druhý zápis je správny, záleží len na stanovení podmienky určujúcej, ktorý záznam sa upraví.
Ak podmienke vyhovie viac záznamov, dôjde k zmene pri všetkých záznamoch, ktoré vyhoveli podmienke. Ak nevyhovie ani jeden záznam z tabuľky, ostane tabuľka bez zmien.
Pre našu ďalšiu činnosť si naplňte aj druhú tabuľku KNIHA aspoň niekoľkými záznamami, aby sme sa nabudúce mohli pohrať s mnohými variantmi príkazu SELECT. Tu uvidíme silu SQL.
Aby sme si precvičili to, čo sme si dnes vysvetlili, ale zároveň nepoškodili nevhodným zásahom prácne vytvorené databázové základy budúceho projektu knižnice, vypracujeme si cvične domácu úlohu!

 Domáca úloha:

1)   Vytvorte si cvičnú databázu SKUSKA
2)   V nej vytvorte tabuľku OSOBY, ktorá  bude obsahovať tieto stĺpce a ich typy:

                por_cislo               int auto_increment primary key

                meno                     varchar(30)

3)   Naplňte tabuľku vhodnými dátami (môžete vyskúšať aj zadávanie a zobrazovanie znakov s diakritikou)
4)   Vypíšte obsah tabuľky
5)   Zmažte niekoľko záznamov podľa vami stanovenej podmienky
6)   Vložte jeden nový záznam

                (Čo zaujímavé ste zistili???)

7)   Zmeňte ľubovoľný záznam príkazom update a prezrite si výsledok
8)   Čo sa stane, ak zadáte neúplný príkaz:

                delete from osoby

9)   Zrušte tabuľku OSOBY
10)  Zrušte databázu SKUSKA (mysqladmin drop...)

 

 

 

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá