MySQL AUTO_INCREMENT mit Beispielen

Anonim

Was ist die automatische Inkrementierung?

Auto Increment ist eine Funktion, die mit numerischen Datentypen arbeitet. Jedes Mal, wenn ein Datensatz in eine Tabelle für ein als automatisches Inkrement definiertes Feld eingefügt wird, werden automatisch fortlaufende numerische Werte generiert.

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 in Beziehung stehen.

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 der möglichen Lösungen wäre, eine Formel zum Generieren des Primärschlüssels zu verwenden, der vor dem Hinzufügen von Daten prüft, ob der Schlüssel in der Tabelle vorhanden ist. Dies mag 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 die Auto-Inkrement-Funktion von MySQL verwenden, um Primärschlüssel zu generieren. Das automatische Inkrementieren wird mit dem Datentyp INT verwendet. Der INT-Datentyp unterstützt sowohl vorzeichenbehaftete als auch vorzeichenlose Werte. Vorzeichenlose Datentypen können nur positive Zahlen enthalten. Als bewährte Methode wird empfohlen, die nicht signierte Einschränkung für den Primärschlüssel für die automatische Inkrementierung zu definieren.

Automatische Inkrementsyntax

Schauen wir uns nun das Skript an, mit dem die Filmkategorietabelle 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. Es wird beim Einfügen von Daten in die Tabelle nicht mitgeliefert, MySQL generiert sie.

Standardmäßig ist der Startwert für AUTO_INCREMENT 1 und wird für jeden neuen Datensatz um 1 erhöht

Lassen Sie uns den aktuellen Inhalt der Kategorietabelle untersuchen.

SELECT * FROM `categories`;

Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie die folgenden 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 Kategorietabelle ein.

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

Wenn Sie das obige Skript für die myflixdb in der MySQL-Workbench ausführen, erhalten Sie die folgenden 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 hat es automatisch für uns generiert, da die Kategorie-ID als automatisches Inkrement definiert ist.

Wenn Sie die letzte von MySQL generierte Einfüge-ID erhalten möchten, können Sie dazu die Funktion LAST_INSERT_ID verwenden. Das unten gezeigte Skript erhält die zuletzt generierte ID.

SELECT LAST_INSERT_ID();

Wenn Sie das obige Skript ausführen, erhalten Sie die letzte von der INSERT-Abfrage generierte Auto-Inkrement-Nummer. Die Ergebnisse sind unten gezeigt.

Zusammenfassung

  • Das Attribut "Automatisches Inkrementieren" generiert bei Angabe in einer Spalte mit numerischen Datentypen nacheinander Zahlen, wenn eine neue Zeile zur Datenbank hinzugefügt wird.
  • Das automatische Inkrement wird üblicherweise zum Generieren von Primärschlüsseln verwendet.
  • Der im Auto-Inkrement definierte Datentyp sollte groß genug sein, um viele Datensätze aufzunehmen. Durch das Definieren von TINYINT als Datentyp für ein Feld für die automatische Inkrementierung wird die Anzahl der Datensätze, die der Tabelle hinzugefügt werden können, nur auf 255 begrenzt, da darüber hinausgehende Werte vom Datentyp TINYINT nicht akzeptiert würden.
  • Es wird als bewährte Methode angesehen, die vorzeichenlose Einschränkung für Primärschlüssel mit automatischer Inkrementierung 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 nacheinander neue Zahlen.
  • Standardmäßig ist der Startwert für AUTO_INCREMENT 1 und wird für jeden neuen Datensatz um 1 erhöht
  • Verwenden Sie AUTO_INCREMENT = 10, damit die Sequenz AUTO_INCREMENT mit einem anderen Wert beginnt