2. diel - MS-SQL krok za krokom: Vytvorenie databázy a tabuľky
V minulej 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 tutoriáli vytvoríme databázu a do nej nejakú tabuľku.
Komponenty pre prácu s databázou
Než sa pustíme do tvorby databázy, najskôr si skontrolujeme, že máme vo Visual Studiu nainštalované potrebné nástroje. Otvoríme si Visual Studio Installer a klikneme na možnosť Modify:
V nasledujúcom okne vyberieme položku .NET desktop development:
Dalej prepneme na záložku Individual components av novej ponuke nižšie po vyhledavanie SQL zaškrtneme komponent SQL Server Data Tools, automaticky sa nám označia aj ďalšie potrebné komponenty. Potom klikneme na tlačidlo Modify, čím spustíme inštaláciu nástrojov pre prácu s databázou:
Potom sa už môžeme pustiť do tvorby databázy. Obvykle nám pre jeden projekt (web) postačí jedna databáza.
Pridanie databázy do nového projektu
Vo Visual Studiu si vytvorte konzolovú aplikáciu v C#. V okne Solution Explorer kliknite pravým tlačidlom na projekt a vyberte Add -> New Item.
Vyberte kategóriu Dáta a položku Service-based Database. Databázu
pomenujte napríklad webDatabase
. V MS-SQL databázach je zvykom
používať CamelCase pri pomenovávaní, diakritike sa ako vždy vyhneme.
Dialóg potvrdíme.
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 tzv. jazyk deklaratívny. Zatiaľ čo v imperatívnych jazykoch počítača vlastne hovoríme krok po kroku čo má urobiť, v jazykoch deklaratívnych iba hovoríme čo má byť výsledkom a už nás nezaujíma, ako tento výsledok počítač dosiahne. Vďaka tomu sú databázové otázky zjednodušené na príkaz typu "Vráť mi 10 užívateľov s najvyšším hodnotením". Databáza takúto otázku pochopí, rozloží si ju na nejaké svoje inštrukcie a tak ju spracuje. Nám potom naozaj vráti výsledok bez toho, aby sme tušili, ako k nemu došla. Pokiaľ vám príkaz prišiel ako nadsadenie, tak to tak nie je a príkazy naozaj takto vyzerajú. Len sú anglicky.
T-SQL sa používa na platforme MS-SQL a pokiaľ sa nedostanete do jeho hlbín, tak 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, to preto, že ich to lepšie odlíši od zvyšku dotazu alebo od kódu našej aplikácie (napr. v ASP.NET). Názvy tabuliek, stĺpcov a ďalšie identifikátory sa v T-SQL píšu CamelCase notáciou (prvé písmeno slova veľké, ďalšie malé, bez medzier). Je dobrým zvykom ich vkladať do hranatých zátvoriek (na českej klávesnici AltGt + F a AltGt + G).
Vytvorenie tabuľky
Databázu si v okne Serve Explorer otvorte. Pokiaľ ho nevidíte, zájdite do menu View > Server Explorer. Databázu si rozkliknite, uvidíte 7 zložiek, nás zatiaľ bude zaujímať zložka Tables. Rozkliknite si ju. Nič v nej nebude, pretože sme si zatiaľ žiadnu tabuľku nepridali. Kliknite pravým tlačidlom na tento priečinok a vyberte Add New Table.
Visual Studio otvorí designer tabuľky. Tento designer má okno rozdelené na tri časti. V hornej polovici máme stĺpce našej tabuľky s ich dátovými typmi a ďalšími dôležitými vlastnosťami a dole výsledný T-SQL kód, ktorý sa spustí až budeme chcieť databázu vytvoriť.
Vpravo hore si pridáme do tabuľky stĺpce. Pridajte si do tabuľky stĺpce
FirstName
, LastName
, BirthDate
a
NumberOfArticles
. Predvolený stĺpec Id
,
ponecháme.
Presuňme sa k 2. stĺpcu, kde sú dátové typy jednotlivých stĺpcov
tabuľku. Prednastavený máme nchar(10)
, čo sú textové reťazce
s 10 znakmi. Typov je skutočne veľa, ale my si dlho (asi až do konca
seriálu) vystačíme len s niekoľkými.
Id
ponecháme naint
FirstName
aLastName
nastavíme nanvarchar(60)
, to je krátky text s maximálne 60 znakmi.BirthDate
nadate
.- Posledná,
NumberOfArticles
, bude typuint
.
Pri všetkých stĺpcoch zrušte začiarknutie v stĺpci Allow Nulls, čo
spôsobí, že bude hodnoty vždy nutné zadať. Časom si popíšeme aj
ďalšie dátové typy a NULL
(ktorý sme zakázali), ale teraz
vám s nimi nebudem motať hlavu Pri dátových typoch pre text, pokiaľ to umožňujú (s tým vám
poradí našepkávač, ktorý ste si už určite všimli) sa do zátvoriek
uvádza maximálna dĺžka.
Všimnite 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ý primárny kľúč by mala
mať každá tabuľka (aj keď teoreticky nemusí). Keď budeme chcieť
užívateľa napr. vymazať, vymažeme ho podľa tohto kľúča (teda podľa
Id
). Keby sme ho mazali podľa mena, zmazali by sme niekoľko
položiek, pretože napríklad Jánov Novákov tam môže byť viac. Podľa
Id
vymažeme vždy len toho jedného. Aby sa používatelia
číslovali automaticky, tak stĺpci Id
nastavíme Identity
specification. Označte stĺpec Id
av okne Properties (ak ho
nevidíte, stlačte F4) si rozbaľte ponuku Identity Specification a
pri vlastnosti "Is Identity" vyberte true
. Vlastnosť Identity
Increment hovorí, že budeme číslo zväčšovať o 1.
A výsledný návrhár vyzerá takto:
Kým tabuľku odošlete v kóde zmeňte jej názov (v hranatých zátvorkách v kóde) na "Users". Kód bude teraz vyzerať takto:
CREATE TABLE [dbo].[Users] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [FirstName] NCHAR(60) NULL, [LastName] NCHAR(60) NULL, [BirthDate] DATE NULL, [NumberOfArticles] INT NULL )
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á tlačidlom Update ktorý sa nachádza nad primarným klíčom Id. Teraz sa stali dve udalosti. Tou prvou je, že nám Visual Studio otvorilo dialóg, ktorý (až sa načíta) bude zhŕňať čo v databáze meníme a aký by to mohlo mať vplyv. V našom prípade sa ňu zvláštneho nedeje a preto správa bude stručná a krátka. Ale keby sme napríklad pridávali stĺpce, Visual Studio nás informuje o skutočnosti, akú hodnotu budú mať novo pridané stĺpce pri už existujúcich položkách. Keď sa dialóg načíta, potvrďte ho tlačidlom Update Database.
Ďalej nám Visual Studio otvorilo okno Data Tools Operation. Tu sa objavila jedna položka, ktorá sa zmenila na zelenú fajku (ak všetko prebehlo ako má). Keď si ju rozkliknete, uvidíte, že operácia, ktorú som urobili, Visual Studio doplnilo tým, že sa serveru spýtalo práve na možné dôsledky a tie nám zobrazilo. Potom vygenerovalo script, ten spustilo a ten prebehol úspešne.
Keď si okno Server Explorer aktualizujete (prvé tlačidlo v nástrojovej lište tohto okna), tak sa tam nová tabuľka objaví.
Teraz si prejdeme T-SQL kód ktorý Visual Studio vytvorilo.
CREATE TABLE [dbo].[Users] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [FirstName] NCHAR(60) NULL, [LastName] NCHAR(60) NULL, [BirthDate] DATE NULL, [NumberOfArticles] INT NULL )
Prvý riadok je jasný. Na ďalších riadkoch sa definujú jednotlivé
stĺpce tabuľky a ich dátový typ. NOT NULL
je to, prečo sme
rušili zatržítka, teda že stĺpce nesmú byť nevyplnené. O hodnote
NULL
sa dozviete v niektorom z ďalších dielov. Pri
nchar
k typu uvádzame aj počet znakov. Id
je
označené ako primárny kľúč tabuľky a IDENTITY
nastavuje, aby
databáza každému novému užívateľovi priradila o 1 väčšie
ID
, ako mal ten posledný.
Pokiaľ by sme sa rozhodli tabuľku odstrániť, vykonáme to v Server Exploreri. Databázu by sme odstránili v Solution Exploreri.
Spúšťanie scriptu T-SQL
Na databáze môžeme spustiť ľubovoľný T-SQL script. Stačí na ňu v Server Exploreri kliknúť pravým tlačidlom a vybrať New Query.
Otvorí sa nám nový súbor SQL a tam vložíme T-SQL kód. Skúsme si cez zdrojový kód odstrániť našu tabuľku, to vykonáme príkazom:
DROP TABLE [Users];
Keď chceme kód spracovať, klikneme na zelenú šípku Execute, ktorá je vľavo hore, ako bolo tlačidlo Update pri tabulkách.
V Server Exploreri sa môžete uistiť, že tabuľka z databázy naozaj zmizla, nezabudnite ho predtým obnoviť. Teraz si skúste tabuľku znovu vytvoriť naším SQL dotazom:
CREATE TABLE [dbo].[Users] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [FirstName] NCHAR(60) NULL, [LastName] NCHAR(60) NULL, [BirthDate] DATE NULL, [NumberOfArticles] INT NULL )
V budúcej lekcii, MS-SQL krok za krokom: Vkladanie a mazanie dát v tabuľke, si našu tabuľku už naplníme nejakými dátami:) .