MySQL AUTO_INCREMENT s primjerima

Anonim

Što je automatsko povećanje?

Automatsko povećanje je funkcija koja djeluje na numeričkim vrstama podataka. Automatski generira sekvencijalne numeričke vrijednosti svaki put kad se zapis ubaci u tablicu za polje definirano kao automatski priraštaj.

Kada koristiti automatsko povećanje?

U lekciji o normalizaciji baze podataka pogledali smo kako se podaci mogu pohraniti s minimalnom redundantnošću, spremajući podatke u mnoge male tablice, međusobno povezane primarnim i stranim ključevima.

Primarni ključ mora biti jedinstven jer jedinstveno identificira red u bazi podataka. Ali, kako možemo osigurati da primarni ključ uvijek bude jedinstven? Jedno od mogućih rješenja bilo bi korištenje formule za generiranje primarnog ključa koji provjerava postoji li ključ u tablici prije dodavanja podataka. Ovo može dobro funkcionirati, ali kao što vidite pristup je složen i nije siguran. Da bismo izbjegli takvu složenost i osigurali da je primarni ključ uvijek jedinstven, možemo koristiti MySQL-ovu značajku automatskog povećanja za generiranje primarnih ključeva. Automatski priraštaj koristi se s tipom podataka INT. Tip podataka INT podržava i potpisane i nepotpisane vrijednosti. Nepotpisane vrste podataka mogu sadržavati samo pozitivne brojeve. Kao najbolja praksa, preporučuje se definirati nepotpisano ograničenje na primarnom ključu automatskog povećanja.

Sintaksa automatskog povećanja

Pogledajmo sada skriptu koja se koristi za stvaranje tablice kategorija filmova.

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

Primijetite "AUTO_INCREMENT" u polju category_id. To dovodi do automatskog generiranja kategorije Id svaki put kada se novi redak ubaci u tablicu. Ne isporučuje se prilikom umetanja podataka u tablicu, MySQL ih generira.

Prema zadanim postavkama početna vrijednost za AUTO_INCREMENT je 1 i ona će se povećavati za 1 za svaki novi zapis

Ispitajmo trenutni sadržaj tablice kategorija.

SELECT * FROM `categories`;

Izvršenje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate.

 
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

Ubacimo sada novu kategoriju u tablicu kategorija.

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

Izvršavanje gornje skripte protiv myflixdb u MySQL radnom stolu daje sljedeće rezultate prikazane u nastavku.

 
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

Imajte na umu da nismo naveli ID kategorije. MySQL ga je automatski generirao za nas jer je ID kategorije definiran kao automatski priraštaj.

Ako želite dobiti zadnji ID umetanja koji je generirao MySQL, za to možete koristiti funkciju LAST_INSERT_ID. Skripta prikazana u nastavku dobiva zadnji generirani ID.

SELECT LAST_INSERT_ID();

Izvršavanje gornje skripte daje zadnji broj automatskog povećanja generiran INSERT upitom. Rezultati su prikazani u nastavku.

Sažetak

  • Atribut automatskog povećanja kada je naveden na stupcu s numeričkim vrstama podataka, generira brojeve uzastopno kad god se novi redak doda u bazu podataka.
  • Automatski priraštaj obično se koristi za generiranje primarnih ključeva.
  • Definirani tip podataka na automatskom povećanju trebao bi biti dovoljno velik da primi velik broj zapisa. Utvrđivanjem TINYINT kao vrste podataka za polje automatskog povećanja ograničava se broj zapisa koji se mogu dodati u tablicu na 255 samo budući da tip podataka TINYINT ne prihvaća nikakve vrijednosti izvan te vrijednosti.
  • Smatra se dobrom praksom specificirati nepotpisano ograničenje na primarnim ključevima s automatskim povećanjem kako bi se izbjegli negativni brojevi.
  • Kada se redak izbriše iz tablice, njegov automatski povećani ID ne upotrebljava se ponovno. MySQL nastavlja generirati nove brojeve uzastopno.
  • Prema zadanim postavkama početna vrijednost za AUTO_INCREMENT je 1 i ona će se povećavati za 1 za svaki novi zapis
  • Da biste omogućili da slijed AUTO_INCREMENT započne s drugom vrijednošću, upotrijebite AUTO_INCREMENT = 10