MySQL AUTO_INCREMENT s príkladmi

Anonim

Čo je to automatický prírastok?

Automatický prírastok je funkcia, ktorá pracuje s číselnými údajovými typmi. Automaticky generuje postupné číselné hodnoty zakaždým, keď je záznam vložený do tabuľky pre pole definované ako automatický prírastok.

Pri použití automatického prírastku?

V lekcii o normalizácii databázy sme sa zamerali na to, ako je možné údaje ukladať s minimálnou redundanciou, a to ukladaním údajov do mnohých malých tabuliek, ktoré navzájom súvisia pomocou primárneho a cudzieho kľúča.

Primárny kľúč musí byť jedinečný, pretože jedinečne identifikuje riadok v databáze. Ako však môžeme zabezpečiť, aby bol primárny kľúč vždy jedinečný? Jedným z možných riešení by bolo použitie vzorca na vygenerovanie primárneho kľúča, ktorý pred pridaním údajov skontroluje v tabuľke existenciu kľúča. To môže fungovať dobre, ale ako vidíte, prístup je zložitý a nie spoľahlivý. Aby sme sa vyhli takejto zložitosti a zabezpečili, že primárny kľúč je vždy jedinečný, môžeme na generovanie primárnych kľúčov použiť funkciu automatického prírastku MySQL. Automatický prírastok sa používa s dátovým typom INT. Dátový typ INT podporuje podpísané aj nepodpísané hodnoty. Nepodpísané dátové typy môžu obsahovať iba kladné čísla. Ako najlepší postup sa odporúča definovať nepodpísané obmedzenie v primárnom kľúči automatického prírastku.

Syntax automatického prírastku

Pozrime sa teraz na skript použitý na vytvorenie tabuľky kategórií filmov.

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šimnite si „AUTO_INCREMENT“ v poli category_id. To spôsobí, že sa ID kategórie automaticky vygeneruje vždy, keď sa do tabuľky vloží nový riadok. Pri vkladaní údajov do tabuľky sa nedodáva, MySQL ich generuje.

V predvolenom nastavení je začiatočná hodnota pre AUTO_INCREMENT 1 a pre každý nový záznam sa zvýši o 1

Poďme preskúmať aktuálny obsah tabuľky kategórií.

SELECT * FROM `categories`;

Vykonanie vyššie uvedeného skriptu v pracovnej ploche MySQL proti myflixdb nám dáva nasledujúce 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

Poďme teraz vložiť novú kategóriu do tabuľky kategórií.

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

Vykonanie vyššie uvedeného skriptu proti myflixdb v pracovnom stole MySQL nám dáva nasledujúce výsledky uvedené nižšie.

 
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

Upozorňujeme, že sme nedodali identifikátor kategórie. MySQL to pre nás automaticky vygeneroval, pretože id kategórie je definovaný ako automatický prírastok.

Ak chcete získať posledné ID vloženia, ktoré vygeneroval MySQL, môžete na to použiť funkciu LAST_INSERT_ID. Skript zobrazený nižšie získa posledné ID, ktoré bolo vygenerované.

SELECT LAST_INSERT_ID();

Vykonaním vyššie uvedeného skriptu získate posledné číslo prírastku Auto vygenerované dotazom INSERT. Výsledky sú uvedené nižšie.

Zhrnutie

  • Atribút automatického prírastku, ak je uvedený v stĺpci s číselnými údajovými typmi, generuje čísla postupne, kedykoľvek je do databázy pridaný nový riadok.
  • Automatický prírastok sa bežne používa na generovanie primárnych kľúčov.
  • Definovaný typ údajov v automatickom prírastku by mal byť dostatočne veľký na to, aby sa do neho zmestilo veľa záznamov. Definovanie TINYINT ako dátového typu pre pole s automatickým prírastkom obmedzuje počet záznamov, ktoré je možné pridať do tabuľky, iba na 255, pretože akékoľvek ďalšie hodnoty by dátový typ TINYINT neakceptoval.
  • Za dobrý postup sa považuje určenie nepodpísaného obmedzenia na primárnych kľúčoch automatického prírastku, aby sa zabránilo záporným číslam.
  • Keď je riadok odstránený z tabuľky, jeho automaticky sa zvyšujúce ID sa znova nepoužije. MySQL pokračuje v generovaní nových čísel postupne.
  • V predvolenom nastavení je začiatočná hodnota pre AUTO_INCREMENT 1 a pre každý nový záznam sa zvýši o 1
  • Ak chcete, aby sekvencia AUTO_INCREMENT začínala inou hodnotou, použite AUTO_INCREMENT = 10