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

Tiivistรค tรคmรค viesti seuraavasti: