1. diel - MS-SQL krok za krokom: Úvod do MS-SQL a príprava prostredia
Vitajte pri prvej lekcii kurzu databázy MS-SQL. Kurz je určený pre všetkých, ktorí sa ešte s databázami nestretli a potrebujú s nimi pracovať v ďalšom jazyku (napr. v ASP.NET na webe alebo v C# formulárovej aplikácii). Zmyslom je naučiť vás základy jazyka T-SQL (MS-SQL), ktoré sú podobné vo všetkých SQL databázach (MS-SQL, MySQL, SQLite, ...). Postupne si ukážeme vytváranie tabuliek, vkladanie dát, ich modifikáciu a nakoniec aj výber, vyhľadávanie a komplikovanejšie dopyty cez viacero tabuliek.
Pracovať budeme iba so samotnou databázou a bez ďalšieho programovacieho jazyka. Nebude to ale také suché, ako to znie, pretože budeme používať Visual Studio. Ukážeme si, ako veci naklikať (tie ktoré idú) a ako to isté zapísať aj ako T-SQL dopyt. Z grafického rozhrania pekne pochopíte, čo presne robíte a potom si to spojíte s SQL príkazom:
Získané znalosti môžete využiť v ktoromkoľvek jazyku pre prácu s MS-SQL databázou (napr. v ASP.NET) a s minimálnou úpravou aj s ktoroukoľvek inou SQL databázou. Po dokončení tohto kurzu budete schopní pracovať s databázou na takej úrovni, aby ste dokázali vytvoriť jednoduchý redakčný systém alebo podobnú aplikáciu.
Minimálne požiadavky
Pre tento kurz nie sú potrebné žiadne špeciálne zručnosti, všetko si
postupne ukážeme a vysvetlíme. Stačí bežná práca s počítačom 
Relačná databáza
MS-SQL je tzv. relačná databáza. Tento pojem označuje databázu
založenú na tabuľkách. Každá tabuľka obsahuje položky jedného typu.
Môžeme mať teda tabuľku users, ďalšiu tabuľku
articles a ďalej napríklad tabuľku comments.
Databázovú tabuľku si môžeme predstaviť napríklad ako tabuľku v
Exceli. Tabuľka users potom vyzerá napríklad takto:
| Meno | Priezvisko | Dátum narodenia | Počet článkov |
|---|---|---|---|
| Ján | Malý | 11.3.1984 | 17 |
| Tomáš | Veselý | 1.2.1989 | 6 |
| Jozef | Mak | 20.12.1972 | 9 |
| Michal | Múdry | 14.8.1990 | 1 |
Položky (tu konkrétne používatelia) ukladáme na jednotlivé riadky, stĺpce potom označujú atribúty (vlastnosti, ak chcete), ktoré položky majú. MS-SQL databáza je typovaná, to znamená, že každý stĺpec má pevne stanovený dátový typ (číslo, znak, krátky text, dlhý text...) a môže obsahovať hodnoty len tohto typu. Ak chceme s relačnou databázou rozumne pracovať, každý riadok v tabuľke by mal byť opatrený unikátnym identifikátorom. U používateľov by to mohlo byť potrebné rodné číslo, oveľa častejšie sa však používajú identifikátory umelé a to tak, že užívateľov jednoducho očíslujeme. K tomu sa dostaneme neskôr.
Slovo relačné označuje vzťah (anglicky relation). Ten je medzi tabuľkami alebo medzi entitami v jednej tabuľke. To si ale necháme na inokedy a zatiaľ budeme pracovať len s jednou tabuľkou zároveň.
RDBMS
Možno vás napadlo, na čo vlastne potrebujeme nejakú databázu. Dáta by sme rovnako dobre mohli ukladať do nejakých textových súborov, binárok, XML alebo niečoho podobného. Určite by to nejako fungovalo, alebo nie?
Označenie databázy je vlastne nepresné a v odbornej literatúre sa stretneme s označením RDBMS (Relation DataBase Management System). Slovensky je to preložené ako "systém riadenia bázy dát", čo znie naozaj hrozne a preto budem ďalej používať označenie databázový stroj alebo RDBMS. Databázový stroj (teda tu MS-SQL) nie je len úložisko dát. Jedná sa o veľmi sofistikovaný a naladený nástroj, ktorý za nás rieši množstvo problémov a zároveň je jeho použitie extrémne jednoduché. S databázou totiž komunikujeme jazykom SQL, ktorým sú v podstate ľudsky zrozumiteľné vety. Jazyk databázy MS-SQL je T-SQL, T označuje transact, pretože podporuje transakcie, ale o tom až ďalej. Spolu s ukladaním dát je ale treba ďalej riešiť mnoho ďalších vecí. Asi by nás napadlo napr. zabezpečenie alebo optimalizácia výkonu. RDBMS toho ale robí ešte oveľa viac, rieši za nás problém súčasnej editácie rovnakej položky niekoľkými používateľmi v rovnaký okamih, ktorý by inak mohol zapríčiniť nekonzistenciu databázy. RDBMS dáta v tomto prípade zamkne a odomkne až po vykonaní zápisu. Ďalej umožňuje spájať niekoľko dopytov do transakcií, kedy sa séria dopytov vykoná vždy celá alebo vôbec. Nestane sa, že by sa vykonala len časť. Tieto vlastnosti databázového stroja sú zhrnuté skratkou ACID, poďme si ju vysvetliť.
ACID
ACID je akronym slov Atomicity (nedeliteľnosť), Consistency (validita), Isolation (izolácia) a Durability (trvanlivosť). Jednotlivé zložky majú nasledujúci význam:
- Atomicity - Operácie v transakcii sa vykonajú ako jedna atomická (nedeliteľná) operácia. Tzn. že ak nejaká časť operácie zlyhá, vráti sa databáza do pôvodného stavu a žiadne časti transakcie nebudú vykonané. Reálny príklad je napr. prevod peňazí na bankovom účte. Ak sa nepodarí peniaze odpočítať z jedného účtu, nebudú ani pripísané na účet druhý. Inak by bola databáza v nekonzistentnom stave. Ak by sme si prácu s dátami riešili sami, mohlo by sa nám toto veľmi jednoducho stať.
- Consistency - Stav databázy po dokončení transakcie je vždy konzistentný, teda validný podľa všetkých definovaných pravidiel a obmedzení. Nikdy nenastane situácia, že by sa databáza nachádzala v nekonzistentnom stave.
- Isolation - Operácie sú izolované a navzájom sa neovplyvňujú. Ak sa zíde v jeden okamih viac dopytov na zápis do rovnakého riadku, sú vykonávané postupne, ako vo fronte.
- Durability - Všetky zapísané dáta sú okamžite zapísané na trvanlivé úložiská (na pevný disk), v prípade výpadku el. energie alebo iného prerušenia prevádzky RDBMS všetko zostane tak, ako bolo tesne pred výpadkom.
Databáza (presnejšie databázový stroj) je teda čierna skrinka, s ktorou naša aplikácia komunikuje a do ktorej ukladá všetky dáta. Jej použitie je veľmi jednoduché a je odladená tak, aby sme si sami zápis dát v programe urobili asi len ťažko. Vôbec sa nemusíme starať o to, ako sú dáta fyzicky uložené, s databázou komunikujeme pomocou jednoduchého dopytovacieho jazyka SQL, viď ďalej. V dnešnej dobe sa vôbec neoplatí zaťažovať sa otázkou ukladania dát, jednoducho siahneme po hotovej databáze, ktorých je obrovské množstvo a sú väčšinou zadarmo. O databáze občas hovoríme ako o 3. vrstve aplikácie (1. vrstva je užívateľské rozhranie, 2. vlastná logika aplikácie, 3. je práve dátová vrstva).
Potrebné nástroje
Potrebovať budeme iba Visual Studio. To je možné použiť vo variante Community, ktorý je úplne zadarmo alebo, ak ste študent, môžete využiť zadarmo verziu Professional.
Ak Visual Studio ešte nainštalované nemáme, stiahneme príslušný inštalačný súbor z oficiálnej stránky Microsoftu a spustíme. Po chvíľke sa nám spustí Visual Studio Installer, v ktorom zaškrtneme možnosť .NET desktop development a v okne Installation details v pravej časti vyberieme SQL Server Expres 2019 LocalDB:

Na prácu s databázou MS-SQL vo Visual Studiu je nutné mať nainštalované všetky nasledujúce komponenty. Ak už Visual Studio máte z minulosti, overte si vo Visual Studio Installeri, že inštalácia obsahuje balíčky SQL Server Express 2019 LocalDB a Data storage and processing.
V hlavnom okne Workloads nakoniec zídeme dole a zaškrtneme možnosť Data storage and processing v časti Other Toolsets:

Inštaláciu spustíme kliknutím na tlačidlo Install.
Akonáhle je všetko nainštalované, otvorí sa nám uvítacia obrazovka Visual Studia:

Možnosť prihlásenia preskočíme a zvolíme režim zobrazenia, v ktorom budeme pracovať. Visual Studio potom spustíme tlačidlom Start Visual Studio:

Skôr, ako sa pustíte do čítania nasledujúcej lekcie, MS-SQL krok za krokom: Vytvorenie databázy a tabuľky, pripravte
si Visual Studio.
.




