MySQL AUTO_INCREMENT esimerkkien kanssa

Mikä on automaattinen lisäys?

Automaattinen lisäys on toiminto, joka toimii numeerisilla tietotyypeillä. Se luo automaattisesti peräkkäisiä numeerisia arvoja aina, kun tietue lisätään taulukkoon kenttään, joka on määritelty automaattiseksi lisäykseksi.

Kun käytät automaattista lisäystä?

Tietokannan normalisointia käsittelevässä oppitunnissa tarkastelimme, kuinka tietoja voidaan tallentaa minimaalisella redundanssilla tallentamalla tiedot useisiin pieniin taulukoihin, jotka liittyvät toisiinsa käyttämällä ensisijaisia ​​ja vieraita avaimia.

MySQL AUTO_INCREMENT esimerkkien kanssa

Ensisijaisen avaimen on oltava yksilöllinen, koska se tunnistaa yksilöllisesti tietokannan rivin. Mutta kuinka voimme varmistaa, että ensisijainen avain on aina ainutlaatuinen? Yksi mahdollisista ratkaisuista olisi käyttää kaavaa luomaan ensisijainen avain, joka tarkistaa avaimen olemassaolon taulukosta ennen tietojen lisäämistä. Tämä voi toimia hyvin, mutta kuten näette, lähestymistapa on monimutkainen eikä idioottivarma. Vältäksemme tällaista monimutkaisuutta ja varmistaaksemme, että ensisijainen avain on aina ainutlaatuinen, voimme käyttää MySQLAutomaattinen lisäystoiminto perusavainten luomiseksi. Automaattista lisäystä käytetään INT-tietotyypin kanssa. INT-tietotyyppi tukee sekä etumerkillisiä että etumerkittömiä arvoja. Etumerkittömät tietotyypit voivat sisältää vain positiivisia lukuja. Parhaana käytäntönä on suositeltavaa määrittää etumerkitön rajoitus ensisijaiselle avaimelle automaattisesti.

Automaattinen lisäyssyntaksi

Katsotaan nyt elokuvan luokkataulukon luomiseen käytettyä käsikirjoitusta.

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

Huomaa "AUTO_INCREMENT" Kategorian_id-kentässä. Tämä aiheuttaa sen, että luokkatunnus luodaan automaattisesti aina, kun taulukkoon lisätään uusi rivi. Sitä ei toimiteta, kun tietoja lisätään taulukkoon, MySQL synnyttää sen.

Oletusarvon mukaan arvo AUTO_INCREMENT aloitusarvo on 1, ja se kasvaa yhdellä jokaista uutta tietuetta kohti.

Tarkastellaan luokkataulukon nykyistä sisältöä.

SELECT * FROM `categories`;

Suoritetaan yllä oleva komentosarja MySQL työpenkki myflixdb:tä vastaan ​​antaa meille seuraavat tulokset.

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

Lisätään nyt uusi luokka luokkataulukkoon .

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

Suoritetaan yllä oleva komentosarja myflixdb in -ohjelmaa vastaan MySQL työpöytä antaa meille seuraavat alla esitetyt tulokset.

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

Huomaa, että emme toimittaneet luokkatunnusta. MySQL loi sen meille automaattisesti, koska kategoriatunnus on määritetty automaattiseksi lisäykseksi.

Jos haluat saada viimeisen lisäystunnuksen, jonka on luonut MySQL, voit käyttää LAST_INSERT_ID-funktiota tehdäksesi sen. Alla näkyvä skripti saa viimeisen luodun tunnuksen.

SELECT LAST_INSERT_ID();

Yllä olevan komentosarjan suorittaminen antaa viimeisen INSERT-kyselyn luoman automaattisen lisäyksen. Tulokset on esitetty alla.

MySQL AUTO_INCREMENT

Yhteenveto

  • Automaattinen lisäys -attribuutti, kun se määritetään sarakkeessa, jossa on numeerisia tietotyyppejä, luo numerot peräkkäin aina, kun tietokantaan lisätään uusi rivi.
  • Automaattista lisäystä käytetään yleisesti perusavainten luomiseen.
  • Automaattisen lisäyksen määritetyn tietotyypin tulee olla riittävän suuri, jotta siihen mahtuu useita tietueita. TINYINT:n määrittäminen automaattisen lisäyksen kentän tietotyypiksi rajoittaa taulukkoon lisättävien tietueiden lukumäärän vain 255:een, koska TINYINT-tietotyyppi ei hyväksy sen ylittäviä arvoja.
  • Hyvänä käytäntönä pidetään etumerkitön rajoitteen määrittämistä automaattisesti lisättäville ensisijaisille avaimille negatiivisten lukujen välttämiseksi.
  • Kun rivi poistetaan taulukosta, sen automaattisesti lisättyä tunnusta ei käytetä uudelleen. MySQL jatkaa uusien numeroiden luomista peräkkäin.
  • Oletusarvon mukaan arvo AUTO_INCREMENT aloitusarvo on 1, ja se kasvaa yhdellä jokaista uutta tietuetta kohti.
  • Jos haluat antaa AUTO_INCREMENT-sekvenssin alkaa toisella arvolla, käytä AUTO_INCREMENT = 10