BLACK FRIDAY - Největší IT akce roku. Získej až 80 % kreditů navíc nebo využij slevy až 80 % na e-learning. Ale pozor, akce platí pouze do 30. 11. 2025.
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 2 - MS-SQL krok za krokem: Vytvoření databáze a tabulky

V minulé lekci, MS-SQL krok za krokem: Úvod do MS-SQL a příprava prostředí, jsme si řekli něco o relačních databázích a připravili jsme si prostředí.

Dnes si v MS-SQL tutoriálu založíme první databázi a vytvoříme v ní tabulku uživatelů. Osvojíme si tak základní práci s Visual Studiem a naučíme se první T-SQL příkazy.

Vytvoření databáze ve Visual Studio

Otevřeme si Visual Studio a v úvodním okně přejdeme pomocí tlačítka Continue without code do hlavního okna:

Úvodní okno Visual Studia - MS-SQL databáze krok za krokem

K MS-SQL databázím budeme přistupovat přes okno SQL Server Object Explorer. Otevřeme si jej přes nabídku View:

Otevření SQL Server Object Explorer - MS-SQL databáze krok za krokem

V okně SQL Server Object Explorer si rozbalíme položky SQL Server a následně (localdb)\MSSQLLo­calDB:

SQL Server Object Explorer - MS-SQL databáze krok za krokem

Pro vytvoření nové LocalDB databáze klikneme pravým tlačítkem myši na složku Databases a zvolíme Add New Database:

Vytvoření nové databáze - MS-SQL databáze krok za krokem

Databázi pojmenujeme databazeProWeb. V MS-SQL databázích je zvykem používat PascalCase při pojmenovávání. Diakritice se jako vždy vyhneme. Místo uložení si zvolíme libovolné, můžeme však ponechat i to výchozí. Dialog potvrdíme:

Dialog vytvoření nové databáze - MS-SQL databáze krok za krokem

Pokud se nám databáze v okně SQL Server Object Explorer ihned nezobrazí, stačí kliknout na tlačítko Refresh v levém horním rohu okna:

Nová databáze - MS-SQL databáze krok za krokem

Máme vše připraveno k tomu, abychom se mohli začít učit jazyk T-SQL.

Jazyk T-SQL

T-SQL označuje Transact Structured Query Language, tedy strukturovaný dotazovací jazyk. T-SQL je jazyk deklarativní. Zatímco u imperativních jazyků počítači říkáme krok po kroku co má udělat, u jazyků deklarativních pouze říkáme co má být výsledkem a již nás nezajímá, jak tohoto výsledku počítač dosáhne. Díky tomu jsou databázové dotazy zjednodušeny na příkaz typu "Vrať mi 10 uživatelů s nejvyšším hodnocením". Databáze takový dotaz pochopí, rozloží si ho na nějaké své instrukce a tak jej zpracuje. Nám poté opravdu vrátí výsledek, aniž bychom tušili, jak k němu došla. Pokud vám příkaz přišel jako nadsázka, tak tomu tak není a příkazy opravdu takto vypadají. Jen jsou anglicky.

T-SQL se používá na platformě MS-SQL a dokud se nedostanete do jeho hlubin, tak je totožný s SQL. Každý výrobce databáze si SQL trochu upraví, ale základ je vždy stejný.

SQL se původně jmenovalo SEQUEL (Structured English Query Language) a vzniklo v laboratořích společnosti IBM s cílem vytvořit jazyk, kterým by se dalo komunikovat s databází jednoduchou angličtinou. SQL (relační) databáze se poté rozšiřovaly a ujaly. Dnes se prakticky nic jiného nepoužívá a i když má T-SQL v objektovém programování značné nevýhody, firmám se nechce přecházet na nic jiného (i když existují alternativní řešení). Ale to jsme odbočili.

V T-SQL (a SQL obecně) se většinou píší příkazy velkými písmeny, to proto, že je to lépe odliší od zbytku dotazu nebo od kódu naší aplikace (například v ASP.NET Core). Názvy tabulek, sloupců a další identifikátory se v T-SQL píší PascalCase notací (první písmeno slova velké, další malá, bez mezer). Je dobrým zvykem je vkládat do hranatých závorek (na české klávesnici Alt Gr + F a Alt Gr + G).

Vytvoření tabulky

Našim cílem bude vytvořit tabulku uživatelů s následující strukturou:

Jméno Příjmení Datum narození Počet článků
Jan Novák 11.3.1984 17
Tomáš Marný 1.2.1989 6
Josef Nový 20.12.1972 9
Michaela Slavíková 14.8.1990 1

Připomeňme si, že položky (konkrétně zde uživatele) v databázových tabulkách ukládáme na jednotlivé řádky, sloupce pak označují atributy, které položky mají. Zatím nám půjde pouze o vytvoření samotné tabulky, tedy o definování jejích sloupců. Daty tabulku naplníme až později.

V okně SQL Server Object Explorer si otevřeme naši databázi. Uvidíme osm složek, nás zatím bude zajímat pouze složka Tables. Rozklikněme si ji. Kromě nějakých systémových tabulek se v ní žádné nenacházejí. Vlastní tabulku vytvoříme kliknutím pravým tlačítkem na složku Tables a výběrem Add New Table...:

Přidání nové tabulky - MS-SQL databáze krok za krokem

Ve Visual Studiu se nám otevře designer (návrhář) tabulky:

Návrhář ve Visual Studiu - MS-SQL databáze krok za krokem

Tento návrhář má okno rozdělené na dvě části. V horní polovině máme přehledné definice sloupců tabulky s jejich názvy (Name), datovými typy (Data Type) a dalšími důležitými vlastnostmi. Každému sloupci databázové tabulky tu odpovídá jeden řádek. Můžeme zde vidět předdefinovaný výchozí sloupec Id, tj. unikátní identifikátor. Dole pak máme výsledný T-SQL kód, který se spustí až budeme chtít tabulku skutečně vytvořit.

Výchozí sloupec Id si ponecháme a přidáme pod něj do tabulky sloupce Jmeno, Prijmeni, DatumNarozeni a PocetClanku. Vždy nejprve zadáme název sloupce Name a následně přidání potvrdíme klávesou Enter:

Přidávání nových sloupců - MS-SQL databáze krok za krokem

Datové typy

Přesuňme se k druhému sloupci návrháře, kde jsou datové typy jednotlivých sloupců tabulky. Přednastavený máme nchar(10), což jsou textové řetězce o maximální délce 10 znaků. Typů je opravdu mnoho, ale my si dlouho vystačíme jen s několika:

  • Id ponecháme na typu int, tedy celé číslo.
  • Jmeno a Prijmeni nastavíme na nvarchar(60), to je krátký text o maximálně 60 znacích.
  • Datum narození změníme na typ date představující datum.
  • Poslední sloupec, PocetClanku, bude typu int.

U všech sloupců zrušíme zatržení hodnoty Allow Nulls, což způsobí, že bude hodnoty vždy nutné zadat. Časem si popíšeme i další datové typy a NULL (který jsme zakázali), ale teď vám s nimi nebudeme motat hlavu :) U datových typů pro text, pokud to umožňují (s tím nám poradí našeptávač, kterého jsme si již určitě všimli) se do závorek uvádí maximální délka.

Vedle typu date MS-SQL ještě podporuje i datový typ datetime2 (případně starší datetime), do kterého lze kromě data uložit i čas.

Primární klíč

Všimněme si, že předdefinovaný sloupec Id má u sebe ikonku klíče. Jedná se o tzv. primární klíč. Klíče (někdy indexy) nám umožňují identifikovat položku v tabulce. Takový primární klíč by měla mít každá tabulka (i když teoreticky nemusí).

Když budeme chtít uživatele například vymazat, vymažeme ho podle tohoto klíče (tedy podle sloupce Id). Kdybychom ho mazali podle jména, mohli bychom nechtěně smazat hned několik položek, protože třeba Janů Nováků může být v tabulce více. Podle Id vymažeme vždy jen toho jednoho.

Aby se uživatelé po vložení do tabulky číslovali automaticky, tak sloupci Id nastavíme tzv. Identity Specification. Označme sloupec Id a v okně Properties (otevřeme přes menu View a poté Properties Window, případně stisknutím klávesy F4) si rozbalme nabídku Identity Specification. Vlastnost Is Identity nastavme na True:

Identity v okně Properties - MS-SQL databáze krok za krokem

Vlastnost Identity Increment říká, že se bude číslo zvětšovat vždy o 1.

Výsledný návrhář vypadá takto:

Aktuální podoba návrháře - MS-SQL databáze krok za krokem

Přejmenování tabulky

Než tabulku skutečně vytvoříme, tak v kódu ještě změníme její aktuální název Table (v hranatých závorkách) na Uzivatele. Kód bude nyní vypadat takto:

CREATE TABLE [dbo].[Uzivatele]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Jmeno] NVARCHAR(60) NOT NULL,
    [Prijmeni] NVARCHAR(60) NOT NULL,
    [DatumNarozeni] DATE NOT NULL,
    [PocetClanku] INT NOT NULL
)

Odeslání tabulky

Navrženou tabulku musíme do databáze "odeslat". Do databáze se pošle SQL dotaz vygenerovaný Visual Studiem, který vidíme v dolní polovině návrháře. Odeslání provedeme kliknutím na tlačítko Update v levém horním rohu návrháře:

Tlačítko Update - MS-SQL databáze krok za krokem

Teď se staly dvě události. Tou první je, že nám Visual Studio otevřelo dialog, který (až se načte) bude shrnovat, co v databázi měníme a jaký by to mohlo mít dopad. V našem případě se nic zvláštního neděje, a proto zpráva bude stručná a krátká. Ale kdybychom třeba přidávali sloupce, Visual Studio nás informuje o tom, jakou hodnotu budou mít nově přidané sloupce u stávajících položek tabulky. Až se dialog načte, potvrdíme ho tlačítkem Update Database:

Dialog se souhrnem změn v databázi - MS-SQL databáze krok za krokem

Dále nám Visual Studio otevřelo okno Data Tools Operations. Zde se objevila jedna položka, která se změnila v zelenou fajfku (pokud vše proběhlo správně). Když si ji rozklikneme, uvidíme, že operace, kterou jsem provedli, Visual Studio doplnilo tím, že se serveru zeptalo na možné důsledky a ty nám před okamžikem zobrazilo v dialogu. Poté vygenerovalo skript, spustilo jej a ten proběhl úspěšně:

Okno Data Tools Operations - MS-SQL databáze krok za krokem

Když si okno SQL Server Object Explorer aktualizujeme (první tlačítko Refresh v nástrojové liště tohoto okna), tak se nová tabulka objeví v naší databázi:

Nová tabulka v SQL Server Object Explorer - MS-SQL databáze krok za krokem

Pokud bychom se rozhodli tabulku odstranit, provedeme to v okně SQL Server Object Explorer – pravým tlačítkem klikneme na tabulku a vybereme Delete. Stejně tak bychom mohli odstranit i samotnou databázi.

Vygenerovaný T-SQL kód

Nyní si ještě projdeme T-SQL kód který Visual Studio vytvořilo:

CREATE TABLE [dbo].[Uzivatele]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Jmeno] NVARCHAR(60) NOT NULL,
    [Prijmeni] NVARCHAR(60) NOT NULL,
    [DatumNarozeni] DATE NOT NULL,
    [PocetClanku] INT NOT NULL
)

První řádek je vcelku jasný – příkazem CREATE TABLE vytváříme tabulku Uzivatele, dbo zde odkazuje na samotnou databázi. Na dalších řádcích se definují jednotlivé sloupce tabulky a jejich datový typ. U nvarchar k typu uvádíme i počet znaků. NOT NULL je to, proč jsme rušili zatržení Allow Nulls, tedy že sloupce nesmí být nevyplněné. O hodnotě NULL se dozvíte v některém z dalších dílů.

Id je pomocí PRIMARY KEY označeno jako primární klíč tabulky. IDENTITY mu navíc nastavuje, aby databáze každému novému uživateli přiřadila o 1 větší Id, než měl ten poslední.

Spouštění T-SQL skriptu

Na databázi můžeme spustit libovolný T-SQL skript. Stačí na ni v okně SQL Server Object Explorer kliknout pravým tlačítkem a vybrat New Query...:

Vytvoření SQL dotazu ve Visual Studio - MS-SQL databáze krok za krokem

Otevře se nám nový SQL soubor, do nějž můžeme napsat náš T-SQL kód. Zkusme si přes zdrojový kód odstranit naši tabulku Uzivatele, to provedeme následujícím příkazem:

DROP TABLE [Uzivatele];

V SQL je dobrou praxí každý příkaz vždy zakončit středníkem ;, který značí konec daného příkazu. V T-SQL je to však ve většině případů nepovinné.

Když chceme kód zpracovat, klikneme na zelenou šipku Execute, která je vlevo nahoře, jako bylo tlačítko Update u tabulek:

Spuštění SQL skriptu ve Visual Studio - MS-SQL databáze krok za krokem

V okně SQL Server Object Explorer se můžeme ujistit, že tabulka z databáze opravdu zmizela, nezapomeňme jej předtím obnovit. Nakonec si tabulku vytvoříme znovu naším SQL dotazem:

CREATE TABLE [dbo].[Uzivatele]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Jmeno] NVARCHAR(60) NOT NULL,
    [Prijmeni] NVARCHAR(60) NOT NULL,
    [DatumNarozeni] DATE NOT NULL,
    [PocetClanku] INT NOT NULL
)

V příští lekci, MS-SQL krok za krokem: Vkládání a mazání dat v tabulce, si naší tabulku již naplníme nějakými daty :)


 

Předchozí článek
MS-SQL krok za krokem: Úvod do MS-SQL a příprava prostředí
Všechny články v sekci
MS-SQL databáze krok za krokem
Přeskočit článek
(nedoporučujeme)
MS-SQL krok za krokem: Vkládání a mazání dat v tabulce
Článek pro vás napsal Michal Žůrek - misaz
Avatar
Uživatelské hodnocení:
596 hlasů
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.
Aktivity