Letní akce! Lákají tě IT školení C#, Javy a PHP v Brně? Přihlas se a napiš nám do zpráv kód "BRNO 500" pro slevu 500 Kč na libovolný brněnský kurz. Lze kombinovat se slevami uvedenými u školení i použít pro více kurzů. Akce končí 28.7.

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

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

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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 tutoriálu vytvoříme databázi a do ní nějakou tabulku.

Vytvořme si databázi, obvykle nám pro jeden projekt (web) postačí jedna databáze.

Ve Visual Studiu si vytvořte libovolnou aplikaci v C# nebo VB.NET, nejlepší bude, když si asi vytvoříte konzolovou aplikaci. Vybraný jazyk nás vlastně nebude zajímat, protože se budeme věnovat pouze databázi. V okně Solution Explorer klikněte pravým tlačítkem na projekt a vyberte Add -> New Item.

Přidání databáze do projektu ve Visual Studio

Vyberte kategorii Data a položku Service-based Database. Databázi pojmenujte třeba databazeProWeb. V MS-SQL databázích je zvykem používat CamelCase při pojmenovávání, diakritice se jako vždy vyhneme. Dialog potvrdíme.

Vytvoření MS-SQL databáze

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 tzv. jazyk deklarativní. Zatímco u imperativních jazyků počítači vlastně ří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ř. v ASP.NET). Názvy tabulek, sloupců a další identifikátory se v T-SQL píší CamelCase 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 AltGt + F a AltGt + G).

Vytvoření tabulky

Databázi si v okně Serve Explorer otevřete. Pokud ho nevidíte, zajděte do menu View > Server Explorer. Databázi si rozklikněte, uvidíte 7 složek, nás zatím bude zajímat složka Tables. Rozklikněte si ji. Nic v ní nebude, protože jsme si zatím žádnou tabulku nepřidali. Klikněte pravým tlačítkem na tuto složku a vyberte Add New Table.

Přidat tabulku

Visual Studio otevře designer tabulky. Tento designer má okno rozdělené na tři části. V horní polovině máme sloupce naší tabulky s jejich datovými typy a dalšími důležitými vlastnostmi a dole výsledný T-SQL kód, který se spustí až budeme chtít databázi vytvořit.

Vytvoření tabulky ve Visual Studiu

Vpravo nahoře si přidáme do tabulky sloupce. Přidejte si do tabulky sloupce Jmeno, Prijmeni, DatumNarozeni a PocetClanku. Výchozí sloupec Id, ponecháme.

Sloupce v nové tabulce ve Visual Studio

Přesuňme se k 2. sloupci, kde jsou datové typy jednotlivých sloupců tabulku. Přednastavený máme nchar(10), což jsou textové řetězce o 10 znacích. Typů je opravdu mnoho, ale my si dlouho (asi až do konce seriálu) vystačíme jen s několika.

  • Id ponecháme na int
  • Jmeno a Prijmeni nastavíme na nvarchar(60), to je krátký text o maximálně 60 znacích.
  • Datum narození na date.
  • Poslední, PocetClanku, bude typu int.

U všech sloupců zrušte zatržení ve sloupci 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 nebudu motat hlavu :) U datových typů pro text, pokud to umožňují (s tím vám poradí našeptávač, kterého jste si již určitě všimli) se do závorek uvádí maximální délka.

Všimněte 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ř. vymazat, vymažeme ho podle tohoto klíče (tedy podle Id). Kdybychom ho mazali podle jména, smazali bychom několik položek, protože třeba Janů Nováků tam může být více. Podle Id vymažeme vždy jen toho jednoho. Aby se uživatelé číslovali automaticky, tak sloupci Id nastavíme Identity specification. Označte sloupec Id a v okně Properties (pokud jej nevidíte, stiskněte F4) si rozbalte nabídku Identity Specification a u vlastnosti "Is Identity" vyberte true. Vlastnost Identity Increment říká, že budeme číslo zvětšovat o 1.

Okno properties – nastavení Identity

A výsledný návrhář vypadá takto:

Vytvoření tabulky v Visual Studio

Než tabulku odešlete v kódu změňte její název (v hranatých závorkách v kódu) 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
)

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í provede tlačítkem Update vlevo nahoře. 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 ni 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 skutečnosti, jakou hodnotu budou mít nově přidané sloupce u již stávajících položek. Až se dialog načte, potvrďte ho tlačítkem Update Database.

Dialog se sohrnem změn v databázi

Dále nám Visual Studio otevřelo okno Data Tools Operation. Zde se objevila jedna položka, která se změnila v zelenou fajfku (pokud vše proběhlo jak má). Když si ji rozkliknete, uvidíte, že operace, kterou jsem provedli, Visual Studio doplnilo tím, že se serveru zeptalo právě na možné důsledky a ty nám zobrazilo. Poté vygenerovalo script, ten spustilo a ten proběhl úspěšně.

Data tools operations

Když si okno Server Explorer aktualizujete (první tlačítko v nástrojové liště tohoto okna), tak se tam nová tabulka objeví.

Obnovení Server exploreru ve Visual Studio

Nyní si 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 jasný. Na dalších řádcích se definují jednotlivé sloupce tabulky a jejich datový typ. NOT NULL je to, proč jsme rušili zatržítka, tedy že sloupce nesmí být nevyplněné. O hodnotě NULL se dozvíte v některém z dalších dílů. U nvarchar k typu uvádíme i počet znaků. Id je označeno jako primární klíč tabulky a IDENTITY nastavuje, aby databáze každému novému uživateli přiřadila o 1 větší ID, než měl ten poslední.

Pokud bychom se rozhodli tabulku odstranit, provedeme to v Server Exploreru. Databázi bychom odstranili v Solution Exploreru.

Spouštění scriptu T-SQL

Na databázi můžeme spustit libovolný T-SQL script. Stačí na ni v Server Exploreru kliknout pravým tlačítkem a vybrat New Query.

Vytvoření SQL dotazu ve Visual Studio

Otevře se nám nový soubor SQL a tam vložíme T-SQL kód. Zkusme si přes zdrojový kód odstranit naší tabulku, to provedeme příkazem:

DROP TABLE [Uzivatele];

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

V Server Exploreru se můžete ujistit, že tabulka z databáze opravdu zmizela, nezapomeňte jej předtím obnovit. Nyní si zkuste tabulku znovu vytvořit 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 :)


 

 

Článek pro vás napsal Michal Žůrek (misaz)
Avatar
Jak se ti líbí článek?
13 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 (3)

 

 

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

Avatar
Jan Sála
Redaktor
Avatar
Jan Sála:27.8.2014 20:37

no tak jsem to zkusil a hází to stále stejnou chybu
zde je změněný connectionstring

string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Data\Slovicka.mdf;Integrated Security=True";

napadá mě nemůže být třeba chyba tady jak to začíná tím:
@"Data Source=(Local­DB)\v11.0; ?

P.S. na mém PC to stále funguje
P.P.S je divný že to hází zrovna tuhle chybu a ne třeba chybu že soubor nemůže být otevřen nebo soubor nemůže být nalezen

Editováno 27.8.2014 20:39
Odpovědět 27.8.2014 20:37
Když nevím co s tím, tak je chyba v compileru.
Avatar
Jan Sála
Redaktor
Avatar
Jan Sála:31.8.2014 16:15

Udělal jsem jeden test a zjistil jsem toto.
Kamarád má na počítači SQL Server a moje appka mu v pohodě jede.
Ale na těch 2 počítačích na kterých sql server není to nefunguje.

Musím přijít na to jak to vyřešit. Díky všem co se mi snažili pomoct a promiňte že jsem vás stále bombardoval otázkami. Bohužel neumím tolik programovat a nedokázal jsem si pomoct sám.

Editováno 31.8.2014 16:18
Odpovědět 31.8.2014 16:15
Když nevím co s tím, tak je chyba v compileru.
Avatar
xgreplt
Člen
Avatar
xgreplt:17.2.2015 20:10

Jen pro zajimavost co je CamelCase : http://cs.wikipedia.org/wiki/CamelCase

 
Odpovědět 17.2.2015 20:10
Avatar
hricov.martin:15.8.2017 10:36

kde zapisujem ten sql dotaz?

 
Odpovědět 15.8.2017 10:36
Avatar
Odpovídá na hricov.martin
Michal Žůrek (misaz):15.8.2017 16:02

T-SQL scripty tvoříme přes pravé tlačítko na databázi v Server Exploreru a vyberete new Query. Otevře se nám nový soubor SQL a tam píšete T-SQL kód, když ho chcete zpracovat kliknete na zelenou šipku Execute, která je vlevo nahoře jako bylo tlačítko Update u tabulek.

Odpovědět 15.8.2017 16:02
Nesnáším {}, proto se jim vyhýbám.
Avatar
Radek Dlesk
Člen
Avatar
Radek Dlesk:26.9.2017 14:19

Ani se tam ve VS nedostanu. Když chci dle návodu přidat "New Item", tak mi to vůbec nenabídne "Service-based Database". Co dělám špatně?

 
Odpovědět 26.9.2017 14:19
Avatar
Radek Dlesk
Člen
Avatar
Odpovídá na Radek Dlesk
Radek Dlesk:26.9.2017 14:32

Už jsem to vyřešil.

 
Odpovědět 26.9.2017 14:32
Avatar
Odpovídá na Radek Dlesk
Michal Štěpánek:26.9.2017 14:33

A co ti to nabízí? Máš v levém sloupci označeno "Data"?

Odpovědět 26.9.2017 14:33
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Radek Dlesk
Michal Žůrek (misaz):26.9.2017 14:36

Pokud používáš nejnovější Visual Studio, tak si zkontroluj, že máš nainstalované všechny potřebné části. Nedávno jsme to sepisoval v https://www.itnetwork.cz/…9be8e3960fc2#… Mrkni tam na ten přiložený obrázek.

Odpovědět 26.9.2017 14:36
Nesnáším {}, proto se jim vyhýbám.
Avatar
Radek Dlesk
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Radek Dlesk:26.9.2017 15:23

Díky. Používám a neměl jsem :) . Díky oběma, už je to OK.

Editováno 26.9.2017 15:24
 
Odpovědět 26.9.2017 15:23
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 41. Zobrazit vše