Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.
IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - MS-SQL krok za krokom: Vytvorenie databázy a tabuľky

V predchádzajúcej lekcii, MS-SQL krok za krokom: Úvod do MS-SQL a príprava prostredia, sme si povedali niečo o relačných databázach a pripravili sme si prostredie.

Dnes si v MS-SQL tutoriáli založíme prvú databázu a vytvoríme v nej tabuľku používateľov. Osvojíme si tak základnú prácu s Visual Studiom a naučíme sa prvé T-SQL príkazy.

Vytvorenie databázy vo Visual Studiu

Otvoríme si Visual Studio a v úvodnom okne prejdeme pomocou tlačidla Continue without code do hlavného okna:

Úvodné okno Visual Studia - MS-SQL databázy krok za krokom

K MS-SQL databázam budeme pristupovať cez okno SQL Server Object Explorer. Otvoríme si ho cez ponuku Zobrazit:

Otvorenie SQL Server Object Explorer - MS-SQL databázy krok za krokom

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

SQL Server Object Explorer - MS-SQL databázy krok za krokom

Na screenshotoch je použitá inštancia (localdb)\ProjectModels. Ak ju vo svojom Visual Studiu nevidíte, použite štandardnú inštanciu (localdb)\MSSQLLocalDB. Na účely kurzu sú použiteľné obe varianty.

Na vytvorenie novej LocalDB databázy klikneme pravým tlačidlom myši na priečinok Databases a zvolíme Add New Database:

Vytvorenie novej databázy - MS-SQL databázy krok za krokom

Databázu pomenujeme databazaPreWeb. Diakritike sa ako vždy vyhneme. Miesto uloženia si zvolíme ľubovoľné, môžeme však ponechať aj to predvolené. Dialóg potvrdíme:

Dialóg vytvorenia novej databázy - MS-SQL databázy krok za krokom

Ak sa nám databáza v okne SQL Server Object Explorer ihneď nezobrazí, stačí kliknúť na tlačidlo Refresh v ľavom hornom rohu okna:

Nová databáza - MS-SQL databázy krok za krokom

Máme všetko pripravené na to, aby sme sa mohli začať učiť jazyk T-SQL.

Jazyk T-SQL

T-SQL označuje Transact Structured Query Language, teda štruktúrovaný dotazovací jazyk. T-SQL je jazyk deklaratívny. Zatiaľ čo pri imperatívnych jazykoch počítaču hovoríme krok za krokom, čo má urobiť, pri deklaratívnych jazykoch iba hovoríme, čo má byť výsledkom, a už nás nezaujíma, ako počítač tento výsledok dosiahne. Vďaka tomu sú databázové dotazy zjednodušené na príkaz typu „Vráť mi 10 používateľov s najvyšším hodnotením“. Databáza takýto dotaz pochopí, rozloží si ho na nejaké svoje inštrukcie a tak ho spracuje. Nám potom naozaj vráti výsledok bez toho, aby sme tušili, ako k nemu dospela. Ak vám príkaz prišiel ako nadsádzka, tak to tak nie je a príkazy naozaj takto vyzerajú. Len sú anglicky.

T-SQL sa používa na platforme MS-SQL a kým sa nedostanete do jeho hlbín, je totožný s SQL. Každý výrobca databázy si SQL trochu upraví, ale základ je vždy rovnaký.

SQL sa pôvodne volalo SEQUEL (Structured English Query Language) a vzniklo v laboratóriách spoločnosti IBM s cieľom vytvoriť jazyk, ktorým by sa dalo komunikovať s databázou jednoduchou angličtinou. SQL (relačné) databázy sa potom rozširovali a ujali. Dnes sa prakticky nič iné nepoužíva a aj keď má T-SQL v objektovom programovaní značné nevýhody, firmám sa nechce prechádzať na nič iné (aj keď existujú alternatívne riešenia). Ale to sme odbočili.

V T-SQL (a SQL všeobecne) sa väčšinou píšu príkazy veľkými písmenami, pretože ich to lepšie odlíši od zvyšku dotazu alebo od kódu našej aplikácie (napríklad v ASP.NET Core). Názvy tabuliek, stĺpcov a ďalšie identifikátory sa v T-SQL píšu PascalCase notáciou (prvé písmeno slova veľké, ďalšie malé, bez medzier). Je dobrým zvykom vkladať ich do hranatých zátvoriek (na českej klávesnici Alt Gr + F a Alt Gr + G).

Vytvorenie tabuľky

Naším cieľom bude vytvoriť tabuľku používateľov s nasledujúcou štruktúrou:

Meno Priezvisko Dátum narodenia Počet článkov
Ján Kováč 11.3.1984 17
Tomáš Horváth 1.2.1989 6
Jozef Tóth 20.12.1972 9
Michaela Sláviková 14.8.1990 1

Pripomeňme si, že položky (konkrétne tu používateľov) v databázových tabuľkách ukladáme na jednotlivé riadky, stĺpce potom označujú atribúty, ktoré položky majú. Zatiaľ nám pôjde iba o vytvorenie samotnej tabuľky, teda o definovanie jej stĺpcov. Dátami tabuľku naplníme až neskôr.

V okne SQL Server Object Explorer si otvoríme našu databázu. Uvidíme osem priečinkov, nás zatiaľ bude zaujímať iba priečinok Tables. Rozkliknime si ho. Okrem nejakých systémových tabuliek sa v ňom žiadne nenachádzajú. Vlastnú tabuľku vytvoríme kliknutím pravým tlačidlom na priečinok Tables a výberom Add New Table...:

Pridanie novej tabuľky - MS-SQL databázy krok za krokom

Vo Visual Studiu sa nám otvorí designer (návrhár) tabuľky:

Návrhár vo Visual Studiu - MS-SQL databázy krok za krokom
CREATE TABLE [dbo].[Table] (
    [Id] INT NOT NULL PRIMARY KEY
);

Tento návrhár má okno rozdelené na dve časti. V hornej polovici máme prehľadné definície stĺpcov tabuľky s ich názvami (Name), dátovými typmi (Data Type) a ďalšími dôležitými vlastnosťami. Každému stĺpcu databázovej tabuľky tu zodpovedá jeden riadok. Môžeme tu vidieť preddefinovaný predvolený stĺpec Id, t. j. unikátny identifikátor. Dole potom máme výsledný T-SQL kód, ktorý sa spustí, až keď budeme chcieť tabuľku skutočne vytvoriť.

Predvolený stĺpec Id si ponecháme a pridáme pod neho do tabuľky stĺpce Meno, Priezvisko, DatumNarodenia a PocetClankov. Vždy najprv zadáme názov stĺpca Name a následne pridanie potvrdíme klávesom Enter:

Pridávanie nových stĺpcov - MS-SQL databázy krok za krokom
CREATE TABLE [dbo].[Table] ( [Id] INT NOT NULL PRIMARY KEY, [Meno] NCHAR(10) NULL, [Priezvisko] NCHAR(10) NULL, [DatumNarodenia] NCHAR(10) NULL, [PocetClankov] NCHAR(10) NULL ) \--

Dátové typy

Presuňme sa k druhému stĺpcu návrhára, kde sú dátové typy jednotlivých stĺpcov tabuľky. Prednastavený máme nchar(10), čo sú textové reťazce s maximálnou dĺžkou 10 znakov. Typov je naozaj veľa, ale my si dlho vystačíme iba s niekoľkými:

  • Id ponecháme na type int, teda celé číslo.
  • Meno a Priezvisko nastavíme na nvarchar(60), to je krátky text s maximálne 60 znakmi.
  • Dátum narodenia zmeníme na typ date predstavujúci dátum.
  • Posledný stĺpec, PocetClankov, bude typu int.

Pri všetkých stĺpcoch zrušíme zaškrtnutie hodnoty Allow Nulls, čo spôsobí, že bude hodnoty vždy potrebné zadať. Časom si popíšeme aj ďalšie dátové typy a NULL (ktorý sme zakázali), ale teraz vám nimi nebudeme motať hlavu :) Pri dátových typoch pre text, ak to umožňujú (s tým nám poradí našepkávač, ktorého sme si už určite všimli), sa do zátvoriek uvádza maximálna dĺžka.

Okrem typu date MS-SQL podporuje aj dátový typ datetime2 (prípadne starší datetime), do ktorého možno okrem dátumu uložiť aj čas.

Primárny kľúč

Všimnime si, že preddefinovaný stĺpec Id má pri sebe ikonku kľúča. Ide o tzv. primárny kľúč. Kľúče (niekedy indexy) nám umožňujú identifikovať položku v tabuľke. Takýto primárny kľúč by mala mať každá tabuľka (aj keď teoreticky nemusí).

Keď budeme chcieť používateľa napríklad vymazať, vymažeme ho podľa tohto kľúča (teda podľa stĺpca Id). Keby sme ho mazali podľa mena, mohli by sme nechcene zmazať hneď niekoľko položiek, pretože napríklad Jánov Kováčov môže byť v tabuľke viac. Podľa Id vymažeme vždy iba toho jedného.

Aby sa používatelia po vložení do tabuľky číslovali automaticky, nastavíme stĺpcu Id tzv. Identity Specification. Označme stĺpec Id a v okne Vlastnosti (otvoríme cez menu Zobrazit a potom Okno vlastností, prípadne stlačením klávesu F4) si rozbaľme ponuku Identity Specification. Vlastnosť Is Identity nastavme na True:

Identity v okne Properties - MS-SQL databázy krok za krokom

Vlastnosť Identity Increment hovorí, že sa bude číslo zväčšovať vždy o 1.

CREATE TABLE [dbo].[Table]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Meno] NVARCHAR(60) NOT NULL,
    [Priezvisko] NVARCHAR(60) NOT NULL,
    [DatumNarodenia] DATE NOT NULL,
    [PocetClankov] INT NOT NULL
)

Premenovanie tabuľky

Skôr než tabuľku skutočne vytvoríme, tak v kóde ešte zmeníme jej aktuálny názov Table (v hranatých zátvorkách) na Pouzivatelia. Kód bude teraz vyzerať takto:

CREATE TABLE [dbo].[Pouzivatelia]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Meno] NVARCHAR(60) NOT NULL,
    [Priezvisko] NVARCHAR(60) NOT NULL,
    [DatumNarodenia] DATE NOT NULL,
    [PocetClankov] INT NOT NULL
)

Odoslanie tabuľky

Navrhnutú tabuľku musíme do databázy „odoslať“. Do databázy sa pošle SQL dotaz vygenerovaný Visual Studiom, ktorý vidíme v dolnej polovici návrhára. Odoslanie vykonáme kliknutím na tlačidlo Update v ľavom hornom rohu návrhára:

Tlačidlo Update - MS-SQL databázy krok za krokom

Teraz sa stali dve udalosti. Tou prvou je, že nám Visual Studio otvorilo dialóg, ktorý (až sa načíta) bude zhrnovať, čo v databáze meníme a aký by to mohlo mať dopad. V našom prípade sa nič zvláštne nedeje, a preto bude správa stručná a krátka. Ale keby sme napríklad pridávali stĺpce, Visual Studio nás informuje o tom, akú hodnotu budú mať novo pridané stĺpce pri existujúcich položkách tabuľky. Až sa dialóg načíta, potvrdíme ho tlačidlom Update Database:

Dialóg so súhrnom zmien v databáze - MS-SQL databázy krok za krokom

Ďalej nám Visual Studio otvorilo okno Data Tools Operations. Tu sa objavila jedna položka, ktorá sa zmenila na zelenú fajku (ak všetko prebehlo správne). Keď si ju rozklikneme, uvidíme, že operáciu, ktorú sme vykonali, Visual Studio doplnilo tým, že sa servera opýtalo na možné dôsledky a tie nám pred okamihom zobrazilo v dialógu. Potom vygenerovalo skript, spustilo ho a ten prebehol úspešne:

Okno Data Tools Operations - MS-SQL databázy krok za krokom

Keď si okno SQL Server Object Explorer aktualizujeme (prvé tlačidlo a Aktualizovat v nástrojovej lište tohto okna), nová tabuľka sa objaví v našej databáze:

Nová tabuľka v SQL Server Object Explorer - MS-SQL databázy krok za krokom

Ak by sme sa rozhodli tabuľku odstrániť, vykonáme to v okne SQL Server Object Explorer – pravým tlačidlom klikneme na tabuľku a vyberieme Delete. Rovnako by sme mohli odstrániť aj samotnú databázu.

Vygenerovaný T-SQL kód

Teraz si ešte prejdeme T-SQL kód, ktorý Visual Studio vytvorilo:

CREATE TABLE [dbo].[Pouzivatelia]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Meno] NVARCHAR(60) NOT NULL,
    [Priezvisko] NVARCHAR(60) NOT NULL,
    [DatumNarodenia] DATE NOT NULL,
    [PocetClankov] INT NOT NULL
)

Prvý riadok je celkom jasný – príkazom CREATE TABLE vytvárame tabuľku Pouzivatelia, dbo tu odkazuje na samotnú databázu. Na ďalších riadkoch sa definujú jednotlivé stĺpce tabuľky a ich dátový typ. Pri nvarchar k typu uvádzame aj počet znakov. NOT NULL je to, prečo sme rušili zaškrtnutie Allow Nulls, teda že stĺpce nesmú byť nevyplnené. O hodnote NULL sa dozviete v niektorom z ďalších dielov.

Id je pomocou PRIMARY KEY označené ako primárny kľúč tabuľky. IDENTITY mu navyše nastavuje, aby databáza každému novému používateľovi priradila o 1 väčšie Id, než mal ten posledný.

Spúšťanie T-SQL skriptu

Na databáze môžeme spustiť ľubovoľný T-SQL skript. Stačí na ňu v okne SQL Server Object Explorer kliknúť pravým tlačidlom a vybrať New Query...:

Vytvorenie SQL dotazu vo Visual Studiu - MS-SQL databázy krok za krokom

Otvorí sa nám nový SQL súbor, do ktorého môžeme napísať náš T-SQL kód. Skúsme si cez zdrojový kód odstrániť našu tabuľku Pouzivatelia, to vykonáme nasledujúcim príkazom:

DROP TABLE [Pouzivatelia];

V SQL je dobrou praxou každý príkaz vždy ukončiť bodkočiarkou ;, ktorá označuje koniec daného príkazu. V T-SQL je to však vo väčšine prípadov nepovinné.

Keď chceme kód spracovať, klikneme na zelenú šípku Execute, ktorá je vľavo hore, ako bolo tlačidlo Update pri tabuľkách:

Spustenie SQL skriptu vo Visual Studiu - MS-SQL databázy krok za krokom

V okne SQL Server Object Explorer sa môžeme uistiť, že tabuľka z databázy naozaj zmizla, nezabudnime ho predtým obnoviť kliknutím pravým tlačidlom na položku databazaPreWeb a výberom Aktualizovať. Nakoniec si tabuľku vytvoríme znova naším SQL dotazom:

CREATE TABLE [dbo].[Pouzivatelia]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Meno] NVARCHAR(60) NOT NULL,
    [Priezvisko] NVARCHAR(60) NOT NULL,
    [DatumNarodenia] DATE NOT NULL,
    [PocetClankov] INT NOT NULL
)

V nasledujúcej lekcii, MS-SQL krok za krokom: Vkladanie a mazanie dát v tabuľke, si do našej tabuľky už pridáme nejaké dáta :)


 

Predchádzajúci článok
MS-SQL krok za krokom: Úvod do MS-SQL a príprava prostredia
Všetky články v sekcii
MS-SQL databázy krok za krokom
Preskočiť článok
(neodporúčame)
MS-SQL krok za krokom: Vkladanie a mazanie dát v tabuľke
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
33 hlasov
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