1. díl - MS-SQL krok za krokem: Úvod do MS-SQL a příprava prostředí

MS-SQL krok za krokem MS-SQL krok za krokem: Úvod do MS-SQL a příprava prostředí

Vítejte u prvního dílu seriálu tutoriálů k databázi MS-SQL. Seriál je určen pro všechny, co se ještě s databázemi nesetkali a potřebují s nimi pracovat v dalším jazyce (např. v ASP.NET na webu nebo v C# v desktopové aplikaci). Smyslem je naučit vás základy jazyka T-SQL (MS-SQL), které jsou podobné ve všech SQL databázích (MS-SQL, MySQL, SQLite...). Postupně si ukážeme vytváření tabulek, vkládání dat, jejich modifikaci a nakonec i výběr, vyhledávání a komplikovanější dotazy přes více tabulek.

Pracovat budeme pouze se samotnou databází a bez dalšího programovacího jazyka. Nebude to ale tak suché, jak to zní, protože budeme používat Visual Studio. Ukážeme si, jak věci naklikat (ty které jdou) a jak to samé zapsat i jako T-SQL dotaz. Z grafického rozhraní hezky pochopíte co přesně děláte a poté si to spojíte s SQL příkazem. Nabyté znalosti můžete využít v kterémkoli jazyce pro práci s MS-SQL databází (např. v ASP.NET) a s minimální úpravou i s kteroukoli jinou SQL databází. Po dokončení tohoto seriálu budete schopni pracovat s databází na takové úrovni, abyste dokázali vytvořit jednoduchý redakční systém nebo podobnou aplikaci.

Relační databáze

MS-SQL je tzv. relační databáze. Tento pojem označuje databázi založenou na tabulkách. Každá tabulka obsahuje položky jednoho typu. Můžeme mít tedy tabulku uzivatele, další tabulku clanky a další třeba komentare.

Databázovou tabulku si můžeme představit třeba jako tabulku v Excelu. Tabulka uzivatele by mohla vypadat asi takto:

Tabulka uživatelů v Excelu

Položky (konkrétně zde uživatelé) ukládáme na jednotlivé řádky, sloupce pak označují atributy (vlastnosti, chcete-li), které položky mají. MS-SQL databáze je typovaná, to znamená, že každý sloupec má pevně stanovený datový typ (číslo, znak, krátký text, dlouhý text...) a může obsahovat hodnoty jen tohoto typu. Pokud chceme s relační databází rozumně pracovat, každý řádek v tabulce by měl být opatřený unikátním identifikátorem. U uživatelů by to mohlo být třeba rodné číslo, mnohem častěji se však používají identifikátory umělé a to tak, že uživatele prostě očíslujeme. K tomu se dostaneme později.

Slovo relační označuje vztah (anglicky relation). Ten je mezi tabulkami nebo mezi entitami v jedné tabulce. To si ale necháme na jindy a zatím budeme pracovat jen s jednou tabulkou zároveň.

RDBMS

Možná vás napadlo, k čemu vlastně potřebujeme nějakou databázi. Data bychom stejně dobře mohli ukládat do nějakých textových souborů, binárek, XML nebo něčeho podobného. Určitě by to nějak fungovalo, nebo ne?

Označení databáze je vlastně nepřesné a v odborné literatuře se setkáme s označením RDBMS (Relation DataBase Management System). Česky je to přeloženo jako "systém řízení báze dat", což zní opravdu hrozně a proto budu dále používat označení databázový stroj nebo RDBMS. Databázový stroj (tedy zde MS-SQL) není jen úložiště dat. Jedná se o velmi sofistikovaný a odladěný nástroj, který za nás řeší spoustu problémů a zároveň je extrémně jednoduchý k použití. S databází totiž komunikujeme jazykem SQL, kterým jsou v podstatě lidsky srozumitelné věty. Jazyk databáze MS-SQL je T-SQL, T označuje transact, protože podporuje transakce, ale to až dále. Spolu s ukládáním dat je ale třeba dále řešit mnoho dalších věcí. Asi by nás napadlo např. zabezpečení nebo optimalizace výkonu. RDBMS toho ale dělá ještě mnohem více, řeší za nás problém současné editace stejné položky několika uživateli ve stejný okamžik, který by jinak mohl zapříčinit nekonzistenci databáze. RDBMS data v tomto případě zamkne a odemkne až po vykonání zápisu. Dále umožňuje spojovat několik dotazů do transakcí, kdy se série dotazů vykoná vždy celá nebo vůbec. Nestane se, že by se vykonala jen část. Tyto vlastnosti databázového stroje jsou shrnovány zkratkou ACID, pojďme si ji vysvětlit.

ACID

ACID je akronym slov Atomicity (nedělitelnost), Consistency (validita), Isolation (izolace) a Durability (trvanlivost). Jednotlivé složky mají následující význam:

  • Atomicity - Operace v transakci se provedou jako jedna atomická (nedělitelná) operace. Tzn. že pokud nějaká část operace selže, vrátí se databáze do původního stavu a žádné části transakce nebudou provedeny. Reálný příklad je např. převod peněz na bankovním účtu. Pokud se nepodaří peníze odečíst z jednoho účtu, nebudou ani připsány na účet druhý. Jinak by byla databáze v nekonzistentním stavu. Pokud bychom si práci s daty řešili sami, mohlo by se nám toto velmi jednoduše stát.
  • Consistency - Stav databáze po dokončení transakce je vždy konzistentní, tedy validní podle všech definovaných pravidel a omezení. Nikdy nenastane situace, že by se databáze nacházela v nekonzistentním stavu.
  • Isolation - Operace jsou izolované a navzájem se neovlivňují. Pokud se sejde v jeden okamžik více dotazů na zápis do stejného řádku, jsou vykonávány postupně, jako ve frontě.
  • Durability - Všechna zapsaná data jsou okamžitě zapsána na trvanlivá úložiště (na pevný disk), v případě výpadku el. energie nebo jiného přerušení provozu RDBMS vše zůstane tak, jak bylo těsně před výpadkem.

Databáze (přesněji databázový stroj) je tedy černá skříňka, se kterou naše aplikace komunikuje a do které ukládá veškerá data. Její použití je velmi jednoduché a je odladěna tak, jak bychom si sami zápis dat v programu asi těžko udělali. Vůbec se nemusíme starat o to, jak jsou data fyzicky uložena, s databází komunikujeme pomocí jednoduchého dotazovacího jazyka SQL, viz dále. V dnešní době se vůbec nevyplatí zatěžovat se otázkou ukládání dat, jednoduše sáhneme po hotové databázi, kterých je obrovský výběr a jsou většinou zadarmo. O databázi občas hovoříme jako o 3. vrstvě aplikace (1. vrstva je uživatelské rozhraní, 2. vlastní logika aplikace, 3. je právě datová vrstva).

Potřebné nástroje

Potřebovat budeme pouze Visual Studio 2013. To lze použít ve variantě Express, která je úplně zadarmo anebo, pokud jste student, můžete využít zdarma verzi professional. Budeme se zabývat takzvanou localdb, která se ukládá do malého souboru, který půjde s naší aplikaci, vše si .NET Framework obstará sám. Pokud by se vám toto řešení příliš nezamlouvalo, můžete ještě použít SQL Server. Studenti mají tento nástroj zadarmo přes DreamSpark nebo můžete použít i Express verzi. Práce s SQL serverem je podobná.

Než se pustíte do čtení dalšího dílu, připravte si Visual Studio 2013. :)


 

  Aktivity (1)

Článek pro vás napsal Michal Žůrek (misaz)
Avatar
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.

Jak se ti líbí článek?
Celkem (16 hlasů) :
4.754.754.754.754.75


 



 

 

Komentáře
Zobrazit starší komentáře (3)

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Díky, opraveno :)

Odpovědět 15.8.2015 18:37
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Michal Pipal
Člen
Avatar
Michal Pipal:

Zaujala mě věta:

Každá tabulka obsahuje položky jednoho typu.

Jaký typ je myšlen? Při použití slova typ mě napadne datový typ, což nedává v tomhle případě smysl, protože tabulka může mít různé datové typy (jméno string, články int), shodné má pouze sloupec.

 
Odpovědět 26. února 14:35
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Michal Pipal
Jiří Gracík:

Tím myslí, že v jedné tabulce mohou být například uživatelé, ale nic jiného. Možná by bylo lepší říci něco jako entity jednoho typu, nebo něco takového.

Editováno 26. února 14:38
Odpovědět  +2 26. února 14:37
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na Michal Pipal
Michal Žůrek (misaz):

že tabulka obsahuje informace (množné číslo), které lze charakterizovat stejně. Například tabulka clovek nebude obsahovat záznamy o psovi.

Odpovědět  +2 26. února 14:39
Nesnáším {}, proto se jim vyhýbám.
Avatar
Fred Hoover
Člen
Avatar
Fred Hoover:

Znam jeden msql server, jsem zvedav co na to myslite http://www.mssql2016.cz/

 
Odpovědět 4. května 12:01
Avatar
Odpovídá na Fred Hoover
Michal Štěpánek:

Nějak si nedokážu představit, že by naše firma toto měla používat... Vypadne internet a celá firma je v... no tam, kde slunce nesvítí... Dejme tomu, že by se to dalo využít třeba na testování, ale na to se dá pohodlně využít SQL Express, nebo LocalDB, takže zase nic... A ty peníze, co tam píšou, to je taky hovadina. Všechno je to o tom, jakou si firma udělá smlouvu, resp na jakých podmínkách se s dodavatelem domluví...

Odpovědět 4. května 19:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Daniel Lang
Člen
Avatar
Odpovídá na Michal Štěpánek
Daniel Lang:

v USA, UK a Skandinavii je to poměrně normální věc...podle mě je v tom budoucnost, at se nám to líbí nebo ne...Četl jsem ty případovky co tam mají a pokud je to pravda, jsou určitě firmy kterým se to může vyplatit a líbit.

 
Odpovědět 10. listopadu 14:01
Avatar
Odpovídá na Daniel Lang
Michal Štěpánek:

Nemyslím si, že je v tom budoucnost pro všechny firmy. Nevěřím tomu, že by např. banky, nebo nějaké jiné instituce byly ochotny (jestli by vůbec mohly) mít svá data kdesi u nějakého dalšího subjektu. Stejně tak my (jsme lázně) máme velmi citlivá osobní data svých klientů z celého světa a opravdu si neumím představit, že bychom je mohli svěřit někomu dalšímu. Jak bychom pak byli schopni zajistit, aby data neunikla? Ano, můžeš namítnout, že k datům se může případný útočník dostat i u nás, ale pak si za to můžeme sami a nemusíme se dohadovat s někým cizím, kdo za to má nést odpovědnost.

Odpovědět 10. listopadu 14:08
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Marian Benčat:

Ono je to dokonce zakázané právně. My třeba můžeme mít data v Cloudu u Microsoftu, ale máme právně zaručeno, že ty data nesmí opustit Evropu.

Je totiž víceméně oficiální, že všechny data co jdou třeba do USA, tak musí jít přes NSA a to u nás není dovoleno. Z toho důvodu máme přímo pravidlo, že naše replikovaná data musí být replikovaná pouze v Evropě a nesmí ji opustit.

 
Odpovědět 10. listopadu 14:35
Avatar
Daniel Lang
Člen
Avatar
Odpovídá na Michal Štěpánek
Daniel Lang:

To s vámi určitě souhlasím, že pro někoho to smysl určitě nemá. Banky a instituce, které to mají dané legislativou jsou samo mezi nima. Uvidíme co to do budoucna přinese, ale řekl bych že ten podíl bude stále vyšší a vyšší. Někde jsem koukal i na statistiky z ČSÚ, ten zvyšující se trend tam prostě je... Uvidíme těžko spekulovat... :)

 
Odpovědět 16. listopadu 15:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 13. Zobrazit vše