Mikä on automaattinen lisäys?
Automaattinen lisäys on funktio, joka toimii numeerisilla tietotyypeillä. Se luo automaattisesti peräkkäiset numeeriset arvot aina, kun tietue lisätään taulukkoon kentäksi, joka määritellään automaattiseksi lisäykseksi.
Kun käytetään automaattista lisäystä?
Tietokannan normalisointia koskevassa oppitunnissa tarkastelimme, kuinka tietoja voidaan tallentaa pienellä redundanssilla, tallentamalla tietoja moniin pieniin taulukoihin, jotka liittyvät toisiinsa ensisijaisten ja vieraiden avainten avulla.
Ensisijaisen avaimen on oltava yksilöllinen, koska se yksilöi tietokannan rivin. Mutta miten voimme varmistaa, että ensisijainen avain on aina ainutlaatuinen? Yksi mahdollisista ratkaisuista olisi käyttää kaavan avulla ensisijaisen avaimen luomista, joka tarkistaa avaimen olemassaolon taulukossa ennen tietojen lisäämistä. Tämä voi toimia hyvin, mutta kuten näette, lähestymistapa on monimutkainen eikä hölmönkestävä. Tällaisen monimutkaisuuden välttämiseksi ja sen varmistamiseksi, että ensisijainen avain on aina ainutlaatuinen, voimme käyttää MySQL: n automaattista lisäysominaisuutta ensisijaisten avainten luomiseen. Automaattista lisäystä käytetään INT-tietotyypin kanssa. INT-tietotyyppi tukee sekä allekirjoitettuja että allekirjoittamattomia arvoja. Allekirjoittamattomat tietotyypit voivat sisältää vain positiivisia lukuja. Parhaana käytäntönä on suositeltavaa määrittää allekirjoittamaton rajoitus automaattisen lisäyksen ensisijaiseen avaimeen.
Automaattinen lisäyssyntaksi
Katsotaan nyt elokuvakategoriataulukon luomiseen käytettyä komentosarjaa.
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" luokan_id-kentässä. Tämän vuoksi luokan Id luodaan automaattisesti aina, kun uusi rivi lisätään taulukkoon. Sitä ei toimiteta, kun lisäät tietoja taulukkoon, MySQL luo ne.
Oletuksena AUTO_INCREMENT-arvon alkuarvo on 1 ja se kasvaa yhdellä jokaisella uudella tietueella
Tarkastellaan luokkataulukon nykyistä sisältöä.
SELECT * FROM `categories`;
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä 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');
Yllä olevan komentosarjan suorittaminen myflixdb: tä vastaan MySQL-työpöydällä 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 |
9 | Cartoons | NULL |
Huomaa, että emme toimittaneet luokan tunnusta. MySQL loi sen automaattisesti meille, koska luokan tunnus määritellään automaattiseksi lisäykseksi.
Jos haluat saada viimeisen MySQL: n luoman lisäystunnuksen, voit tehdä sen LAST_INSERT_ID-funktiolla. Alla oleva komentosarja saa viimeisen luodun tunnuksen.
SELECT LAST_INSERT_ID();
Yllä olevan komentosarjan suorittaminen antaa viimeisen INSERT-kyselyn luoman automaattisen lisäysnumeron. Tulokset on esitetty alla.
Yhteenveto
- Automaattinen lisäysmäärite, kun se määritetään sarakkeessa, jossa on numeeriset tietotyypit, luo numerot peräkkäin aina, kun uusi rivi lisätään tietokantaan.
- Automaattista lisäystä käytetään yleisesti ensisijaisten avainten luomiseen.
- Automaattisen lisäyksen määritetyn tietotyypin tulisi olla riittävän suuri monien tietueiden sijoittamiseksi. TINYINTin määritteleminen automaattisen lisäyskentän tietotyypiksi rajoittaa taulukkoon lisättävien tietueiden määrän 255: een, koska TINYINT-tietotyyppi ei hyväksy mitään arvoja, jotka ylittävät sen.
- Hyvänä käytäntönä on määrittää automaattisen lisäyksen ensisijaisten avainten allekirjoittamaton rajoitus negatiivisten numeroiden välttämiseksi.
- Kun rivi poistetaan taulukosta, sen automaattisesti kasvavaa tunnusta ei käytetä uudelleen. MySQL jatkaa uusien numeroiden tuottamista peräkkäin.
- Oletuksena AUTO_INCREMENT-arvon alkuarvo on 1 ja se kasvaa yhdellä jokaisella uudella tietueella
- Anna AUTO_INCREMENT-sarjan aloittaa toisella arvolla käyttämällä AUTO_INCREMENT = 10