MySQL AUTO_INCREMENT s příklady

Co je automatický přírůstek?

Auto Increment je funkce, která pracuje s numerickými datovými typy. Automaticky generuje sekvenční číselné hodnoty pokaždé, když je záznam vložen do tabulky pro pole definované jako automatický přírůstek.

Kdy použít automatické zvýšení?

V lekci o normalizaci databází jsme se podívali na to, jak lze data ukládat s minimální redundancí, ukládáním dat do mnoha malých tabulek, které spolu vzájemně souvisí pomocí primárních a cizích klíčů.

MySQL AUTO_INCREMENT s příklady

Primární klíč musí být jedinečný, protože jednoznačně identifikuje řádek v databázi. Jak však můžeme zajistit, aby byl primární klíč vždy jedinečný? Jedním z možných řešení by bylo použít vzorec pro vygenerování primárního klíče, který před přidáním dat zkontroluje existenci klíče v tabulce. To může fungovat dobře, ale jak vidíte, přístup je komplexní a není spolehlivý. Abychom se vyhnuli takové složitosti a zajistili, že primární klíč bude vždy jedinečný, můžeme použít MySQLFunkce Auto increment pro generování primárních klíčů. Auto increment se používá s datovým typem INT. Datový typ INT podporuje podepsané i nepodepsané hodnoty. Datové typy bez znaménka mohou obsahovat pouze kladná čísla. Jako osvědčený postup se doporučuje definovat podmínku nepodepsané na primárním klíči automatického zvýšení.

Syntaxe automatického přírůstku

Podívejme se nyní na skript použitý k vytvoření tabulky kategorií filmů.

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

Všimněte si „AUTO_INCREMENT“ v poli category_id. To způsobí, že se ID kategorie automaticky vygeneruje při každém vložení nového řádku do tabulky. Při vkládání dat do tabulky se nedodává, MySQL generuje to.

Ve výchozím nastavení je počáteční hodnota pro AUTO_INCREMENT 1 a pro každý nový záznam se zvýší o 1

Podívejme se na aktuální obsah tabulky kategorií.

SELECT * FROM `categories`;

Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám dává následující výsledky.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Nyní vložíme novou kategorii do tabulky kategorií .

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

Spuštění výše uvedeného skriptu proti myflixdb in MySQL ponk nám dává následující výsledky uvedené níže.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Všimněte si, že jsme nedodali ID kategorie. MySQL automaticky nám jej vygeneroval, protože id kategorie je definován jako automatický přírůstek.

Pokud chcete získat poslední ID vložení, které bylo vygenerováno pomocí MySQL, můžete k tomu použít funkci LAST_INSERT_ID. Skript zobrazený níže získá poslední vygenerované ID.

SELECT LAST_INSERT_ID();

Spuštěním výše uvedeného skriptu získáte poslední číslo automatického přírůstku vygenerované dotazem INSERT. Výsledky jsou uvedeny níže.

MySQL AUTO_INCREMENT

Shrnutí

  • Atribut automatického přírůstku, pokud je zadán ve sloupci s číselnými datovými typy, generuje čísla postupně vždy, když je do databáze přidán nový řádek.
  • Automatický přírůstek se běžně používá ke generování primárních klíčů.
  • Definovaný datový typ na automatickém přírůstku by měl být dostatečně velký, aby pojal mnoho záznamů. Definování TINYINT jako datového typu pro pole automatického přírůstku omezuje počet záznamů, které lze přidat do tabulky, pouze na 255, protože jakékoli hodnoty přesahující tento datový typ nebudou akceptovány datovým typem TINYINT.
  • Považuje se za dobrou praxi specifikovat podmínku bez znaménka na primárních klíčích s automatickým přírůstkem, abyste se vyhnuli záporným číslům.
  • Když je z tabulky odstraněn řádek, jeho automaticky zvýšené ID se znovu nepoužije. MySQL pokračuje v postupném generování nových čísel.
  • Ve výchozím nastavení je počáteční hodnota pro AUTO_INCREMENT 1 a pro každý nový záznam se zvýší o 1
  • Chcete-li, aby sekvence AUTO_INCREMENT začínala jinou hodnotou, použijte AUTO_INCREMENT = 10