MySQL AUTO_INCREMENT med exempel

Anonim

Vad är automatisk tillväxt?

Auto Increment är en funktion som fungerar på numeriska datatyper. Det genererar automatiskt sekventiella numeriska värden varje gång en post sätts in i en tabell för ett fält definierat som automatisk inkrement.

När använder du automatisk tillväxt?

I lektionen om databasnormalisering tittade vi på hur data kan lagras med minimal redundans genom att lagra data i många små tabeller, relaterade till varandra med primära och främmande nycklar.

En primär nyckel måste vara unik eftersom den identifierar en rad i en databas unikt. Men hur kan vi se till att huvudnyckeln alltid är unik? En av de möjliga lösningarna skulle vara att använda en formel för att generera den primära nyckeln, som kontrollerar om nyckeln finns, i tabellen innan du lägger till data. Detta kan fungera bra men som du ser är tillvägagångssättet komplext och inte idiotsäkert. För att undvika sådan komplexitet och för att säkerställa att den primära nyckeln alltid är unik kan vi använda MySQLs funktion för automatisk inkrement för att generera primära nycklar. Automatisk inkrement används med INT-datatypen. INT-datatypen stöder både signerade och osignerade värden. Osignerade datatyper kan endast innehålla positiva siffror. Som en bästa praxis rekommenderas att du definierar den osignerade begränsningen för den primära nyckeln för automatisk tillväxt.

Automatisk ökning av syntax

Låt oss nu titta på manuset som används för att skapa filmkategoritabellen.

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

Lägg märke till "AUTO_INCREMENT" i fältet category_id. Detta gör att kategori-ID genereras automatiskt varje gång en ny rad sätts in i tabellen. Det levereras inte när du infogar data i tabellen, MySQL genererar det.

Som standard är startvärdet för AUTO_INCREMENT 1 och det ökar med 1 för varje ny post

Låt oss undersöka det aktuella innehållet i kategoritabellen.

SELECT * FROM `categories`;

Att köra ovanstående skript i MySQL-arbetsbänken mot myflixdb ger oss följande resultat.

 
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

Låt oss nu infoga en ny kategori i kategoritabellen.

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

Att utföra ovanstående skript mot myflixdb i MySQL-arbetsbänken ger oss följande resultat som visas nedan.

 
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

Observera att vi inte angav kategori-id. MySQL genererade det automatiskt för oss eftersom kategori-id definieras som automatisk tillväxt.

Om du vill få det sista infognings-id som genererades av MySQL kan du använda funktionen LAST_INSERT_ID för att göra det. Skriptet som visas nedan får det sista id som genererades.

SELECT LAST_INSERT_ID();

Genom att utföra ovanstående skript ges det senaste automatiska inkrementnumret som genererats av INSERT-frågan. Resultaten visas nedan.

Sammanfattning

  • Automatiskt inkrementattribut när det anges i en kolumn med numeriska datatyper, genererar nummer sekventiellt när en ny rad läggs till i databasen.
  • Den automatiska ökningen används ofta för att generera primära nycklar.
  • Den definierade datatypen i den automatiska ökningen bör vara tillräckligt stor för att rymma många poster. Definition av TINYINT som datatyp för ett automatiskt ökningsfält begränsar antalet poster som kan läggas till i tabellen till 255, eftersom alla värden utöver det inte skulle accepteras av TINYINT-datatypen.
  • Det anses vara en bra praxis att ange den osignerade begränsningen för primära nycklar för automatisk inkrement för att undvika att ha negativa siffror.
  • När en rad tas bort från en tabell används inte dess automatiskt ökade ID igen. MySQL fortsätter att generera nya nummer i följd.
  • Som standard är startvärdet för AUTO_INCREMENT 1 och det ökar med 1 för varje ny post
  • För att låta AUTO_INCREMENT-sekvensen börja med ett annat värde, använd AUTO_INCREMENT = 10