Wat is automatisch verhogen?
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 automatisch verhogen.
Wanneer gebruik automatisch verhogen?
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.
Een primaire sleutel moet uniek zijn, aangezien 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 op het bestaan van de sleutel, in de tabel, voordat gegevens worden toegevoegd. Dit werkt misschien goed, maar zoals u kunt zien, is de aanpak complex en niet onfeilbaar. Om dergelijke complexiteit te vermijden en ervoor te zorgen dat de primaire sleutel altijd uniek is, kunnen we MySQL's Auto increment-functie gebruiken om primaire sleutels te genereren. Auto increment wordt gebruikt met het INT-gegevenstype. Het INT-gegevenstype 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 automatisch verhogen te definiëren.
Syntaxis voor automatisch verhogen
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 category_id veld. Hierdoor wordt de categorie-id automatisch 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 met 1 verhoogd voor elke nieuwe record
Laten we eens kijken naar de huidige inhoud van de categorietabel.
SELECT * FROM `categories`;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de 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 invoegen in de categorietabel.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Het uitvoeren van het bovenstaande script tegen de myflixdb in MySQL-workbench geeft ons de volgende resultaten die hieronder worden 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 |
Merk op dat we het categorie-ID niet hebben opgegeven. MySQL heeft het automatisch voor ons gegenereerd omdat de categorie-id is gedefinieerd als automatisch verhogen.
Als je de laatste invoeg-id wilt krijgen die door MySQL is gegenereerd, kun je de functie LAST_INSERT_ID gebruiken om dat te doen. 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. De resultaten zijn hieronder weergegeven.
Overzicht
- Auto increment attribuut wanneer gespecificeerd in een kolom met numerieke gegevenstypen, genereert opeenvolgende getallen telkens wanneer een nieuwe rij wordt toegevoegd aan de database.
- De automatische toename wordt gewoonlijk gebruikt om primaire sleutels te genereren.
- Het gedefinieerde gegevenstype op de automatische toename moet groot genoeg zijn om veel records te kunnen bevatten. Als u TINYINT definieert als het gegevenstype voor een automatisch ophogend veld, wordt het aantal records dat aan de tabel kan worden toegevoegd, beperkt tot 255, aangezien alle andere waarden niet zouden worden geaccepteerd door het gegevenstype TINYINT.
- Het wordt als een goede gewoonte beschouwd om de niet-ondertekende beperking op automatische ophogende primaire sleutels te specificeren om negatieve getallen te vermijden.
- Wanneer een rij uit een tabel wordt verwijderd, wordt zijn automatisch opgehoogde ID niet opnieuw gebruikt. MySQL blijft achtereenvolgens nieuwe nummers genereren.
- Standaard is de startwaarde voor AUTO_INCREMENT 1, en deze wordt met 1 verhoogd voor elke nieuwe record
- Gebruik AUTO_INCREMENT = 10 om de reeks AUTO_INCREMENT met een andere waarde te laten beginnen