MySQL AUTO_INCREMENT met voorbeelden

Wat is automatische verhoging?

Auto Increment is een functie die werkt op numerieke gegevenstypen. Het genereert automatisch opeenvolgende numerieke waarden telkens wanneer een record in een tabel wordt ingevoegd voor een veld dat is gedefinieerd als automatisch verhogen.

Wanneer automatische verhoging gebruiken?

In de les over databasenormalisatie hebben we gekeken hoe gegevens kunnen worden opgeslagen met minimale redundantie, door gegevens op te slaan in veel kleine tabellen, die aan elkaar gerelateerd zijn met behulp van primaire en externe sleutels.

MySQL AUTO_INCREMENT met voorbeelden

Een primaire sleutel moet uniek zijn, omdat deze op unieke wijze een rij in een database identificeert. Maar hoe kunnen we ervoor zorgen dat de primaire sleutel altijd uniek is? Een van de mogelijke oplossingen zou zijn om een ​​formule te gebruiken om de primaire sleutel te genereren, die controleert of de sleutel in de tabel aanwezig is, voordat gegevens worden toegevoegd. Dit kan goed werken, maar zoals je kunt zien is de aanpak complex en niet waterdicht. Om dergelijke complexen om ervoor te zorgen dat de primaire sleutel altijd uniek is, kunnen we de functie Auto-increment van MySQL gebruiken om primaire sleutels te genereren. Automatische verhoging wordt gebruikt bij het gegevenstype INT. Het gegevenstype INT ondersteunt zowel ondertekende als niet-ondertekende waarden. Niet-ondertekende gegevenstypen kunnen alleen positieve getallen bevatten. Als best practice wordt aanbevolen om de niet-ondertekende beperking op de primaire sleutel voor automatische verhoging te definiëren.

Syntaxis voor automatische verhoging

Laten we nu eens kijken naar het script dat is gebruikt om de tabel met filmcategorieën te maken.

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

Let op de “AUTO_INCREMENT” in het categorie_id-veld. Dit zorgt ervoor dat de categorie-ID automatisch wordt gegenereerd telkens wanneer een nieuwe rij in de tabel wordt ingevoegd. Het wordt niet meegeleverd bij het invoegen van gegevens in de tabel, MySQL genereert het.

Standaard is de startwaarde voor AUTO_INCREMENT 1, en deze wordt voor elke nieuwe record met 1 verhoogd

Laten we de huidige inhoud van de categorieëntabel bekijken.

SELECT * FROM `categories`;

Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons het volgendewing resultaten.

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

Laten we nu een nieuwe categorie in de categorieëntabel invoegen.

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

Het bovenstaande script uitvoeren tegen de myflixdb in MySQL-werkbank geeft ons het volgendewing resultaten hieronder weergegeven.

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

Houd er rekening mee dat we de categorie-ID niet hebben opgegeven. MySQL heeft het automatisch voor ons gegenereerd omdat de categorie-ID is gedefinieerd als automatische verhoging.

Als u de laatste invoeg-ID wilt die door MySQL is gegenereerd, kunt u daarvoor de functie LAST_INSERT_ID gebruiken. Het onderstaande script haalt de laatste ID op die is gegenereerd.

SELECT LAST_INSERT_ID();

Door het bovenstaande script uit te voeren, wordt het laatste Auto Increment-nummer gegenereerd door de INSERT-query verkregen. De resultaten worden hieronder weergegeven.

MySQL AUTO_INCREMENT

Samengevat

  • Auto-increment attribuut, indien gespecificeerd in een kolom met een numeriek gegevenstype, genereert getallen opeenvolgend wanneer een nieuwe rij aan de database wordt toegevoegd.
  • De automatische verhoging wordt vaak gebruikt om primaire sleutels te genereren.
  • Het gedefinieerde gegevenstype op Automatische verhoging moet groot genoeg zijn om veel records te kunnen bevatten. Door TINYINT te definiëren als het gegevenstype voor een veld met automatische ophoging, wordt het aantal records dat aan de tabel kan worden toegevoegd beperkt tot slechts 255, aangezien waarden daarbuiten niet door het gegevenstype TINYINT worden geaccepteerd.
  • Het wordt als een goede gewoonte beschouwd om de niet-ondertekende beperking op te geven voor het automatisch ophogen van primaire sleutels om negatieve getallen te voorkomen.
  • Wanneer een rij uit een tabel wordt verwijderd, wordt de automatisch verhoogde ID niet opnieuw gebruikt. MySQL blijft opeenvolgend nieuwe getallen genereren.
  • Standaard is de startwaarde voor AUTO_INCREMENT 1, en deze wordt voor elke nieuwe record met 1 verhoogd
  • Om de reeks AUTO_INCREMENT met een andere waarde te laten beginnen, gebruikt u AUTO_INCREMENT = 10