MySQL AUTO_INCREMENT mit Beispielen

Was ist automatisches Inkrementieren?

Auto Increment ist eine Funktion, die mit numerischen Datentypen arbeitet. Sie generiert automatisch fortlaufende numerische Werte, wenn ein Datensatz fรผr ein als Auto Increment definiertes Feld in eine Tabelle eingefรผgt wird.

Wann wird die automatische Inkrementierung verwendet?

In der Lektion zur Datenbanknormalisierung haben wir untersucht, wie Daten mit minimaler Redundanz gespeichert werden kรถnnen, indem Daten in vielen kleinen Tabellen gespeichert werden, die mithilfe von Primรคr- und Fremdschlรผsseln miteinander verknรผpft sind.

MySQL AUTO_INCREMENT mit Beispielen

Ein Primรคrschlรผssel muss eindeutig sein, da er eine Zeile in einer Datenbank eindeutig identifiziert. Aber wie kรถnnen wir sicherstellen, dass der Primรคrschlรผssel immer eindeutig ist? Eine mรถgliche Lรถsung wรคre, eine Formel zur Generierung des Primรคrschlรผssels zu verwenden, die vor dem Hinzufรผgen von Daten die Existenz des Schlรผssels in der Tabelle รผberprรผft. Dies kann gut funktionieren, aber wie Sie sehen, ist der Ansatz komplex und nicht narrensicher. Um diese Komplexitรคt zu vermeiden und sicherzustellen, dass der Primรคrschlรผssel immer eindeutig ist, kรถnnen wir Folgendes verwenden: MySQLDie Funktion โ€žAuto-Inkrementโ€œ zum Generieren von Primรคrschlรผsseln. Auto-Inkrement wird mit dem Datentyp INT verwendet. Der Datentyp INT unterstรผtzt sowohl vorzeichenbehaftete als auch vorzeichenlose Werte. Vorzeichenlose Datentypen kรถnnen nur positive Zahlen enthalten. Als bewรคhrte Methode wird empfohlen, die vorzeichenlose Einschrรคnkung fรผr den Auto-Inkrement-Primรคrschlรผssel zu definieren.

Syntax fรผr die automatische Inkrementierung

Schauen wir uns nun das Skript an, mit dem die Filmkategorientabelle erstellt wurde.

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

Beachten Sie das โ€žAUTO_INCREMENTโ€œ im Feld โ€žcategory_idโ€œ. Dadurch wird die Kategorie-ID jedes Mal automatisch generiert, wenn eine neue Zeile in die Tabelle eingefรผgt wird. Beim Einfรผgen von Daten in die Tabelle wird es nicht mitgeliefert, MySQL erzeugt es.

StandardmรครŸig ist der Startwert fรผr AUTO_INCREMENT 1 und wird fรผr jeden neuen Datensatz um 1 erhรถht

Sehen wir uns den aktuellen Inhalt der Kategorientabelle an.

SELECT * FROM `categories`;

Ausfรผhren des obigen Skripts in MySQL Workbench gegen myflixdb liefert uns folgende Ergebnisse.

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

Fรผgen wir nun eine neue Kategorie in die Kategorientabelle ein.

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

Fรผhren Sie das obige Skript fรผr die myflixdb aus MySQL Werkbank gibt uns die folgenden unten gezeigten Ergebnisse.

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

Beachten Sie, dass wir die Kategorie-ID nicht angegeben haben. MySQL Es wurde automatisch fรผr uns generiert, da die Kategorie-ID als automatische Inkrementierung definiert ist.

Wenn Sie die letzte Einfรผgungs-ID erhalten mรถchten, die von generiert wurde MySQL, kรถnnen Sie dazu die Funktion LAST_INSERT_ID verwenden. Das unten gezeigte Skript ruft die zuletzt generierte ID ab.

SELECT LAST_INSERT_ID();

Durch Ausfรผhren des obigen Skripts wird die letzte von der INSERT-Abfrage generierte automatische Inkrementnummer angezeigt. Die Ergebnisse sind unten aufgefรผhrt.

MySQL AUTO_INCREMENT

Zusammenfassung

  • Wenn das Attribut โ€žAutomatische Inkrementierungโ€œ fรผr eine Spalte mit numerischen Datentypen angegeben wird, werden bei jedem Hinzufรผgen einer neuen Zeile zur Datenbank fortlaufend Zahlen generiert.
  • Die automatische Inkrementierung wird รผblicherweise zum Generieren von Primรคrschlรผsseln verwendet.
  • Der fรผr die automatische Inkrementierung definierte Datentyp sollte groรŸ genug sein, um viele Datensรคtze aufzunehmen. Durch die Definition von TINYINT als Datentyp fรผr ein Feld mit automatischer Inkrementierung wird die Anzahl der Datensรคtze, die zur Tabelle hinzugefรผgt werden kรถnnen, auf lediglich 255 begrenzt, da darรผber hinausgehende Werte vom TINYINT-Datentyp nicht akzeptiert wรผrden.
  • Es gilt als bewรคhrte Vorgehensweise, die vorzeichenlose Einschrรคnkung fรผr automatisch inkrementierte Primรคrschlรผssel anzugeben, um negative Zahlen zu vermeiden.
  • Wenn eine Zeile aus einer Tabelle gelรถscht wird, wird ihre automatisch inkrementierte ID nicht wiederverwendet. MySQL generiert weiterhin sequenziell neue Zahlen.
  • StandardmรครŸig ist der Startwert fรผr AUTO_INCREMENT 1 und wird fรผr jeden neuen Datensatz um 1 erhรถht
  • Um die AUTO_INCREMENT-Sequenz mit einem anderen Wert beginnen zu lassen, verwenden Sie AUTO_INCREMENT = 10

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: