Nikdy nevíš, kdy to přijde
Zobrazit menu   MENU

6. Základy - co se jinam nevešlo

V rámci základní kapitoly bych ještě rád zmínil několik věcí, které se do předchozích článků tutoriálu nevešly, ale které je pro základní práci s databází vhodné ovládat.

Primární klíč

Primární klíč jsme si již zmiňovali při vytváření tabulky. Technicky jde o index a je vhodné aby každá tabulka (ač technicky nemusí) měla primární klíč. Ten může být jednoduchý, tedy jeden sloupec, kdy každý řádek má unikátní hodnotu. V naší ukázkové tabulce to byl sloupec kniha_id. V naprosté většině případů se využívá tato možnost.

Druhou možností je složený primární klíč. Jde o klíč složený z více sloupců, jejichž kombinace hodnot je unikátní. Mohlo by jít například o 3 sloupce: den, měsíc, rok. V tabulce bychom měli jeden řádek pro každý den. Žádný ze sloupců by sám o sobě neměl neměl unikátní hodnotu, ale jejich vzájemná kombinace by vždy v každém případě byla unikátní: den-měsíc-rok.

V případě naší tabulky knihy bychom dotaz pro vytvoření tabulky s primárním klíčem upravili takto:
CREATE TABLE `knihy` (
`kniha_id` int(10),
`nazev` varchar(100),
`isbn` varchar(20) ,
`autor` varchar(100),
`pocet_stran` int(4),
PRIMARY KEY (`kniha_id`)
);


Modifikátor AUTO_INCREMENT

Společně s primárními klíčem se často využívá další věc, kterou nazýváme AUTO_INCREMENT (tedy něco jako automatické zvyšování hodnoty). Abychom mohli zajistit, že každý řádek bude mít unikátní (a ideálně postupně zvyšujicí se hodnotu), museli bychom před vložením každého řádku zjištovat jaká je hodnota předchozího největšího řádku. Pokud řádku přiřadíme vlastnost AUTO_INCREMENT, bude se o to MySQL starat z nás. Není pak nutné vůbec nutné starat se o tento sloupec při vkládání nového řádku:
CREATE TABLE `knihy` (
`kniha_id` int(10) AUTO_INCREMENT,
`nazev` varchar(100),
`isbn` varchar(20) ,
`autor` varchar(100),
`pocet_stran` int(4),
PRIMARY KEY (`kniha_id`)
);


Hodnota NULL

Nezávisle na tom, jaký má sloupec datový typ, může obsahovat hodnotu NULL. Tato hodnota neznamená nulu, jak by se z názvu mohlo zdát, ale to že hodnota není vyplněna. Pro sloupec můžeme nastavit, zda-li může nabývat této prázdné hodnoty či musí být vždy hodnota vyplněna. V našem případě budeme vyžovat vyplnění názvu knihy:
CREATE TABLE `knihy` (
`kniha_id` int(10) AUTO_INCREMENT,
`nazev` varchar(100) NOT NULL,
`isbn` varchar(20) ,
`autor` varchar(100),
`pocet_stran` int(4),
PRIMARY KEY (`kniha_id`)
);


Další modifikátory pro sloupce

Kromě již uvedených modifikátorů nabízí MySQL ještě nekolik dalších. Modifikátor UNIQUE znamená, že každý řádek v tabulce musí mít v tomto sloupci unikátní hodnotu. Další příznak DEFAULT pak stanovuje jakou výchozí hodnotu bude mít položka, pokud při vkládání nového řádku nevložíme hodnotu pro tento sloupec.

Primární klíč je z principu vždy NOT NULL a UNIQUE, ikdyž explicitně tyto dvě vlastnostni nenastavíme.


Další díly tutoriálu

4. Aktualizace dat
5. Mazání dat
6. Základy - co se jinam nevešlo
7. Základy vyhledávání
8. Pokročilé podmínky výběru