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 elke keer dat een record wordt ingevoegd in een tabel voor een veld dat is gedefinieerd als auto increment.

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 een rij in een database op unieke wijze 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 bestaat in de tabel, voordat er gegevens worden toegevoegd. Dit kan goed werken, maar zoals u kunt zien is de aanpak complex en niet waterdicht. Om dergelijke complexiteit te vermijden en ervoor te zorgen dat de primaire sleutel altijd uniek is, kunnen we MySQL's Auto increment-functie om primaire sleutels te genereren. Auto increment wordt gebruikt met het INT-gegevenstype. Het INT-gegevenstype ondersteunt zowel signed als unsigned waarden. Unsigned gegevenstypen kunnen alleen positieve getallen bevatten. Als best practice wordt aanbevolen om de unsigned-beperking op de auto increment primaire sleutel 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`;

Voer het bovenstaande script uit in MySQL workbench vergeleken met myflixdb geeft ons de volgende 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 de volgende resultaten, zoals 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 ophalen die is gegenereerd door MySQL, 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

Samenvatting

  • Wanneer het kenmerk Automatisch ophogen is opgegeven voor een kolom met een numeriek gegevenstype, worden de getallen opeenvolgend gegenereerd wanneer er 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 unsigned-beperking voor automatisch ophogende primaire sleutels te specificeren om negatieve getallen te voorkomen.
  • Wanneer een rij uit een tabel wordt verwijderd, wordt de automatisch verhoogde ID niet opnieuw gebruikt. MySQL blijft sequentieel nieuwe nummers 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