MySQL AUTO_INCREMENT koos näidetega
Mis on automaatne suurendamine?
Automaatne suurendamine on funktsioon, mis töötab numbriliste andmetüüpidega. See genereerib automaatselt järjestikused arvväärtused iga kord, kui kirje lisatakse tabelisse automaatse juurdekasvuna määratletud välja jaoks.
Millal kasutada automaatset suurendamist?
Andmebaasi normaliseerimise õppetükis vaatlesime, kuidas saab andmeid salvestada minimaalse liiasusega, salvestades andmed paljudesse väikestesse tabelitesse, mis on omavahel seotud primaarsete ja võõrvõtmete abil.
Esmane võti peab olema kordumatu, kuna see tuvastab unikaalselt andmebaasi rea. Kuidas aga tagada, et esmane võti on alati kordumatu? Üks võimalikest lahendustest oleks enne andmete lisamist primaarvõtme genereerimiseks valemiga, mis kontrollib võtme olemasolu tabelis. See võib hästi toimida, kuid nagu näete, on lähenemine keeruline ja mitte lollikindel. Sellise keerukuse vältimiseks ja tagamaks, et primaarvõti on alati kordumatu, saame kasutada MySQLautomaatse suurendamise funktsioon primaarvõtmete genereerimiseks. Andmetüübiga INT kasutatakse automaatset suurendamist. Andmetüüp INT toetab nii allkirjastatud kui ka allkirjastamata väärtusi. Märgistamata andmetüübid võivad sisaldada ainult positiivseid numbreid. Parima tavana on soovitatav määratleda primaarvõtme automaatse suurendamise allkirjata piirang.
Automaatne juurdekasvu süntaks
Vaatame nüüd filmikategooriate tabeli koostamiseks kasutatud skripti.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Pange tähele „AUTO_INCREMENT” väljal category_id. See põhjustab kategooria ID automaatse genereerimise iga kord, kui tabelisse lisatakse uus rida. Seda ei esitata andmete tabelisse sisestamisel, MySQL genereerib seda.
Vaikimisi on AUTO_INCREMENT lähteväärtus 1 ja iga uue kirje puhul suureneb see 1 võrra
Uurime kategooriate tabeli praegust sisu.
SELECT * FROM `categories`;
Ülaltoodud skripti käivitamine MySQL töölaud myflixdb vastu annab meile järgmised tulemused.
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 |
Sisestame nüüd kategooriate tabelisse uue kategooria.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Ülaltoodud skripti käivitamine myflixdb in vastu MySQL töölaud annab meile järgmised allpool näidatud tulemused.
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 |
Pange tähele, et me ei esitanud kategooria ID-d. MySQL genereeris selle meie jaoks automaatselt, kuna kategooria ID on määratletud kui automaatne juurdekasv.
Kui soovite saada viimast lisamise ID-d, mille genereeris MySQL, saate selleks kasutada funktsiooni LAST_INSERT_ID. Allpool näidatud skript saab viimati loodud ID.
SELECT LAST_INSERT_ID();
Ülaltoodud skripti täitmine annab viimase INSERT-päringuga genereeritud automaatse juurdekasvu numbri. Tulemused on näidatud allpool.
kokkuvõte
- Atribuut Automaatne suurendamine, kui see on määratud numbriliste andmetüüpidega veerus, genereerib numbreid järjest, kui andmebaasi lisatakse uus rida.
- Automaatset suurendamist kasutatakse tavaliselt primaarvõtmete genereerimiseks.
- Automaatse juurdekasvu määratud andmetüüp peaks olema piisavalt suur, et mahutada palju kirjeid. TINYINT-i defineerimine automaatse juurdekasvu välja andmetüübina piirab tabelisse lisatavate kirjete arvu 255-ni, kuna TINYINT-i andmetüüp ei aktsepteeri sellest suuremaid väärtusi.
- Negatiivsete arvude vältimiseks peetakse heaks tavaks määrata primaarvõtmete automaatse suurendamise korral märgita piirang.
- Kui rida tabelist kustutatakse, ei kasutata selle automaatselt suurendatavat ID-d uuesti. MySQL jätkab järjestikku uute numbrite genereerimist.
- Vaikimisi on AUTO_INCREMENT lähteväärtus 1 ja iga uue kirje puhul suureneb see 1 võrra
- Kui soovite, et järjestus AUTO_INCREMENT algaks mõne muu väärtusega, kasutage AUTO_INCREMENT = 10