IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

8. diel - MS-SQL krok za krokom: Dátové typy a NULL

V predchádzajúcom cvičení, Riešené úlohy k 7. lekcii MS-SQL, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

Dnes sa v MS-SQL tutoriále vrátime k dátovým typom, predstavíme si tabuľky tých najdôležitejších a povieme si niečo o hodnote NULL.

Dátové typy

Hneď na začiatku nášho on-line kurzu MS-SQL sme si uviedli niekoľko základných dátových typov. Vtedy som vám s nimi nechcel motať hlavu. Reč bola o typoch INT, VARCHAR a DATE. Databáza (konkrétne tu MS-SQL) ich má samozrejme oveľa viac. Uveďme si niekoľko tabuliek a predstavme si tie najdôležitejšie.

Celé čísla

Typ Rozsah
TINYINT 8bitové číslo
SMALLINT 16bitové číslo
INT 32b
BIGINT 64b

Pozn.: Ak hľadáte dátový typ boolean (hodnoty true / false), tak na ukladanie tejto hodnoty sa spravidla používa typ BIT (0/1).

Texty

Typ Rozsah
NVARCHAR (max. počet znaků) počet znaků jaký si zvolíte
NCHAR (počet znaků) pevný počet znaků jaký si zvolíte

Už vieme, že existujú aj typy VARCHAR a CHAR. Tie ale nepodporujú Unicode kódovanie a mohli by ste v nich mať problémy s diakritikou. Preto ich nebudeme používať. N v dátových typoch označuje National, ako medzinárodné. Zaujímavá situácia nastane, keď zapíšeme dátový typ ako NVARCHAR (MAX). V tejto chvíli je dĺžka textu neobmedzená (prakticky je tam limit asi 2GB, čo jednou hodnotou len ťažko zaplníme). Pre dlhé texty sa v minulosti používal typ NTEXT, ktorý je však teraz zastaraný.

Ostatné

Typ Popis
DATE Datum jako textový řetězec ve tvaru 'rrrr-mm-dd', rozsah od '0001-01-01' do '9999-12-31'
TIME Čas jako textový řetězec ve tvaru 'hh:mm:ss'
DATETIME Prakticky je to zřetězení data a času: 'rrrr-mm-dd hh:mm:ss'
BLOB a spol. Obecná data v binárním tvaru. Umožňují do databáze ukládat např. obrázky nebo jiné soubory.

Hodnota NULL

Dátové typy v databázach sa málinko odlišujú od dátových typov, ako ich poznáme v programovacích jazykoch. Zatiaľ čo napríklad v jazyku C môže mať typ int hodnoty len nejakých -32 768 až 32 767 a nič okrem toho, databázový INT môže nadobúdať aj hodnoty NULL. NULL nemá vôbec nič spoločné s nulou (0), označuje to, že hodnota nebola ešte zadaná. Filozofia databáz je takto postavená, nezadané hodnoty majú východiskovú hodnotu NULL (ak im nenastavíme inú) a každý dátový typ má okrem hodnôt, ktoré by sme v ňom očakávali, navyše možnú hodnotu NULL. Datovému typu túto hodnotu môžeme aj zakázať, viac ďalej.

Ak si spomínate, keď sme vytvárali databázu, odškrtávali sme Allow Nulls. To zaistí, že sa nám do databázy NULL nedostanú. Skúsme si to:

INSERT INTO [Users] ([FirstName], [LastName]) VALUES ('Mister', 'Incomplete');

Výsledkom bude chyba, ktorá nám hovorí, že niektoré stĺpce neumožňujú NULL. Otvorte si designer tabuľky, zaškrtajte Allow Nulls u všetkých stĺpcov okrem Id, potvrďte tlačidlom Update a následne tlačidlom Update Database. Teraz dotaz spustite znova. Keď sa teraz pozriete do dát v tabuľke, na konci bude Pán Neúplný a bude mať v nevyplnených stĺpcoch NULL.

Hodnoty NULL v tabuľke - MS-SQL databázy krok za krokom

Prínos hodnoty NULL

Asi sa pýtate na čo hodnota NULL vlastne je? Jej prínos je v tom, že spoznáme, či bola hodnota zadaná. Napr. pri zadávaní čísla neexistuje hodnota, podľa ktorej by sme poznali, že číslo nie je zadané. Keby sme si k tomuto určili hodnotu nula (0), nevieme, či používateľ číslo nezadal alebo zadal práve nulu. NULL okrem iného aj šetrí miesto v databáze, kde na rozdiel od východiskových hodnôt nezaberá miesto.

NULL na strane aplikácie

Už sme si povedali o tom, že programovacie jazyky hodnotu NULL spravidla nemajú (teda tie staticky typované). V jazykoch typovaných, ako je napríklad Java alebo C#, musíme použiť iné dátové typy. VC# môžeme ktorýkoľvek dátový typ označiť ako NULLovateľný a on pochopí, že v ňom môže byť aj NULL. Používa sa na to otáznik, typ je potom napr. int?.

Upresňujúce informácie k dátovým typom

K dátovým typom (ak chcete k stĺpcom) môžeme uviesť niekoľko upresňujúcich informácií. Už sme sa stretli s IDENTITY. Pozrime sa na ďalšie.

Název Popis
IDENTITY Jen pro čísla. Při vkládání řádku dejte této položce hodnotu NULL a databáze jí automaticky přidělí hodnotu o 1 větší než dala minulému řádku (přírůstek se teoreticky dá změnit, ale tím se nyní nebudeme zatěžovat). Výborná věc pro pohodlnou tvorbu unikátních identifikačních klíčů.
UNIQUE Říká, že nesmí existovat více řádků, které mají v této položce stejnou hodnotu (s výjimkou hodnoty NULL).
NOT NULL Udává, že daná hodnota nesmí být prázdná - nepůjde do ní vložit hodnota NULL.
PRIMARY KEY Určuje, že se tenhle sloupec (v každé tabulce max. jeden) bude používat jako primární klíč. Vhodné pro nějaké relativně krátké identifikační kódy, podle kterých budeme řádky nejčastěji hledat. Primární klíč je vždy NOT NULL a UNIQUE i když to nenařídíme, dostane tyto vlastnosti implicitně.
DEFAULT hodnota Výchozí hodnota, kterou položka dostane, když ji při vkládání řádku neuvedeme.

Nové slová upresňujúce dátový typ sa vkladajú zaň, rovnako ako tomu bolo pri IDENTITY. Uveďme si nejaký príklad:

CREATE TABLE [Persons] (
    [Id] INT NOT NULL IDENTITY(1, 1),
    [FirstName] CHAR(35) NOT NULL,
    PRIMARY KEY ([Id])
);

V nasledujúcom kvíze, Kvíz - Výber dát, radenie a dátové typy v MS-SQL, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Riešené úlohy k 7. lekcii MS-SQL
Všetky články v sekcii
MS-SQL databázy krok za krokom
Preskočiť článok
(neodporúčame)
Kvíz - Výber dát, radenie a dátové typy v MS-SQL
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
2 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