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