MySQL AUTO_INCREMENT példákkal

Mi az automatikus növelés?

Az Auto Increment egy olyan funkció, amely numerikus adattípusokon működik. Automatikusan szekvenciális numerikus értékeket generál minden alkalommal, amikor egy rekordot beszúrnak egy táblázatba egy automatikus növekedésként meghatározott mezőhöz.

Mikor használja az automatikus növelést?

Az adatbázis normalizálásáról szóló leckében megvizsgáltuk, hogyan lehet minimális redundanciával adatokat tárolni úgy, hogy sok kis táblában tároljuk az adatokat, amelyek elsődleges és idegen kulcsok használatával kapcsolódnak egymáshoz.

MySQL AUTO_INCREMENT példákkal

Az elsődleges kulcsnak egyedinek kell lennie, mivel egyedileg azonosít egy sort az adatbázisban. De hogyan biztosíthatjuk, hogy az elsődleges kulcs mindig egyedi legyen? Az egyik lehetséges megoldás az lenne, hogy egy képlet segítségével generálják az elsődleges kulcsot, amely ellenőrzi a kulcs meglétét a táblázatban, mielőtt adatot adna hozzá. Ez jól működhet, de amint láthatja, a megközelítés összetett és nem tévedhetetlen. Az ilyen bonyolultság elkerülése és annak biztosítása érdekében, hogy az elsődleges kulcs mindig egyedi legyen, használhatjuk MySQLAz automatikus növelés funkciója az elsődleges kulcsok generálásához. Az INT adattípussal az automatikus növelés használatos. Az INT adattípus támogatja az előjeles és előjel nélküli értékeket is. Az előjel nélküli adattípusok csak pozitív számokat tartalmazhatnak. Bevált gyakorlatként javasolt az előjel nélküli kényszer meghatározása az elsődleges kulcs automatikus növelésére.

Automatikus növekmény szintaxis

Nézzük most a filmkategóriák táblázatának létrehozásához használt forgatókönyvet.

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

Figyelje meg az „AUTO_INCREMENT” értéket a category_id mezőben. Ez azt eredményezi, hogy a kategóriaazonosító automatikusan létrejön minden alkalommal, amikor új sort szúr be a táblázatba. Adatok táblázatba történő beillesztésekor nem adjuk meg, MySQL generálja azt.

Alapértelmezés szerint az AUTO_INCREMENT kezdőértéke 1, és minden új rekordnál 1-gyel nő

Vizsgáljuk meg a kategóriatáblázat aktuális tartalmát.

SELECT * FROM `categories`;

A fenti szkript végrehajtása MySQL munkapad a myflixdb ellen a következő eredményeket adja.

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

Szúrjunk be egy új kategóriát a kategóriatáblázatba.

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

A fenti szkript végrehajtása a myflixdb in MySQL munkapad az alábbi eredményeket adja nekünk.

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

Megjegyzés: nem adtuk meg a kategóriaazonosítót. MySQL automatikusan generálta nekünk, mert a kategóriaazonosító automatikus növekedésként van definiálva.

Ha szeretné lekérni az utolsó beszúrási azonosítót, amelyet a MySQL, használhatja a LAST_INSERT_ID függvényt ehhez. Az alább látható szkript az utoljára generált azonosítót kapja.

SELECT LAST_INSERT_ID();

A fenti parancsfájl végrehajtása az INSERT lekérdezés által generált utolsó automatikus növekedési számot adja meg. Az eredményeket az alábbiakban mutatjuk be.

MySQL AUTO_INCREMENT

Összegzésként

  • Az automatikus növelés attribútum, ha egy numerikus adattípust tartalmazó oszlopban van megadva, szekvenciálisan generálja a számokat, amikor új sor kerül az adatbázisba.
  • Az automatikus növelést általában elsődleges kulcsok generálására használják.
  • Az Automatikus növekményen megadott adattípusnak elég nagynak kell lennie ahhoz, hogy sok rekordot elférjen. Ha a TINYINT-t az automatikus növekménymező adattípusaként határozza meg, a táblához hozzáadható rekordok számát csak 255-re korlátozza, mivel az ezen túlmutató értékeket a TINYINT adattípus nem fogadja el.
  • Jó gyakorlatnak tekinthető az előjel nélküli kényszer megadása az elsődleges kulcsok automatikus növelésére a negatív számok elkerülése érdekében.
  • Ha egy sort törlünk a táblából, az automatikusan megnövelt azonosítója nem kerül felhasználásra újra. MySQL folytatja az új számok szekvenciális generálását.
  • Alapértelmezés szerint az AUTO_INCREMENT kezdőértéke 1, és minden új rekordnál 1-gyel nő
  • Ha azt szeretné, hogy az AUTO_INCREMENT sorozat egy másik értékkel kezdődjön, használja az AUTO_INCREMENT = 10-et