SQL -Sequenz

SQL -Sequenz
Haben Sie jemals die automatische Inkrement- oder Serienanweisung in einer Datenbank verwendet? Wenn ja, dann haben Sie eine SQL -Sequenz. Obwohl Sequenzen und Identitätsspalten geringfügig unterschiedlich sind, teilen sie gemeinsame Eigenschaften.

Eine Sequenz bezieht sich auf eine Reihe einzigartiger ganzzahliger Werte, die bei Bedarf erzeugt werden. Sie sind eine weit verbreitete Funktion in vielen Datenbankmotoren. Dies liegt daran.

Lassen Sie uns das Konzept der SQL -Sequenzen in diesem Tutorial diskutieren.

Wie SQL -Sequenzen funktionieren

Es gibt keine universelle Möglichkeit zu beschreiben, wie Sequenzen funktionieren. Dies liegt daran, dass verschiedene Datenbankmotoren sie unterschiedlich implementieren.

Lassen Sie uns lernen, wie das funktioniert.

Sequenzen in MySQL

Sequenzen in MySQL werden implementiert, indem das Attribut auto_increment in einer Spalte festgelegt wird. In den meisten Fällen wird diese Spalte auch als Primärschlüssel ausgewählt, da jeder Wert in der Spalte eindeutig sein muss.

Wir können veranschaulichen, wie in der folgenden Abfrage eine Sequenz in MySQL verwendet wird:

-- Mysql
table table erstellen (
column_name int auto_increment Primärschlüssel,
column_name2 varchar (100),
);

Die obige Abfrage erstellt eine Spalte mit einer SQL -Sequenz unter Verwendung des Schlüsselworts auto_increment. Beachten Sie, dass wir auch die primäre Schlüsselbeschränkung auf die Spalte festlegen.

Obwohl das Hinzufügen von Sequenzen in MySQL so einfach ist, wie oben dargestellt, sind einige Punkte zu beachten:

  1. Die Sequenzspalte in MySQL muss indiziert werden. Dies bedeutet, die Spalte als Primärschlüssel oder eindeutig festzulegen.
  2. Die Spalte kann keine Nullwerte enthalten. Sie können dies lösen, indem Sie die Nicht -Null -Einschränkung auf die Spalte einstellen. In einigen Fällen kann MySQL ausdrücklich die Nicht -Null -Einschränkung angeben.
  3. Die Werte in der Sequenzspalte beginnen von 1 und erhöhen sich für jeden zur Tabelle hinzugefügten Datensatz um 1 um 1.
  4. Myisam und InnoDB unterstützen die Wiederverwendung von gelöschten Sequenznummern nicht. Daher weist MySQL der nächsten eingefügten Sequenz den folgenden Wert zu, wenn Sie einen Datensatz entfernen. Wenn Sie beispielsweise 10 löschen, wird MySQL diesen Wert nicht wiederverwenden. Stattdessen werden dem nächsten Datensatz 11 11 zugewiesen.
  5. Mit MySQL können Sie den automatischen Inkrementwert zurücksetzen.

Sequenz in postgresql

In PostgreSQL sind Sequenzen benutzerdefinierte Objekte, die an das Schema gebunden sind, in dem sie erstellt werden.

Verwenden Sie die Syntax wie unten gezeigt, um eine Sequenz in PostgreSQL zu erstellen:

-- PostgreSQL
Erstellen Sie Sequenz [falls nicht existiert] Sequence_Name
als data_type
Increment by [increment_value]
MinValue [minumum_Value] | KEIN MINUMUM_VALUE
maxValue [maximum_Value] | Kein maximaler Wert
Starten Sie [mit] Start
Zwischenspeicher
Kein Zyklus
Im Besitz von [table_name.column_name] keine

Okay, was bedeutet das alles? Erlauben Sie uns, es in kleinere Abschnitte zu zerlegen, die wir verstehen können.

Sequenz erstellen

Der erste Teil ist die Erstellung der Sequenz. Auf diese Weise können Sie eine neue Sequenz erstellen, wenn sie nicht existiert. Der Sequenzname kann alles sein, was Sie sich wünschen.

Als Data_Type

Mit der AS -Klausel können Sie den Datentyp für die Sequenz angeben. PostgreSQL ermöglicht Smallint-, INT- und Bigint -Typen. Wenn Sie den Datentyp nicht identifizieren möchten, können Sie diese Klausel überspringen, und PostgreSQL wird standardmäßig an Bigint ausfallen.

Inkrement von

Diese Klausel gibt den Wert an, der der aktuellen Sequenz hinzugefügt wird, um einen neuen Sequenzwert zu erstellen. Wenn beispielsweise die Sequenz 1,2,3,4,5 ist, beträgt der Inkrementwert 1.

Wenn Sie von oben starten und absteigen möchten, wenn die Datensätze hinzugefügt werden, geben Sie einen negativen Wert für die Increment By -Klausel an.

Standardmäßig verwendet PostgreSQL den Inkrementwert von 1.

Minwert

Diese Klausel definiert den Mindestwert für die Sequenz. Wenn kein Wert angegeben ist, verwendet PostgreSQL den Standardwert.

MaxValue

Die MaxValue -Klausel legt den Maximalwert für die Sequenz fest.

BEGINNT MIT

Diese Klausel legt den Startwert für die Sequenz fest. Wenn kein Wert angegeben wird, wird der Minwert für aufsteigende Sequenzen verwendet, und Maxvule wird für absteigende Sequenzen verwendet.

ZWISCHENSPEICHER

Diese Klausel definiert, wie viele Sequenznummern vorgefertigt und im Gedächtnis gespeichert werden sollen. Dies ermöglicht einen schnelleren Zugriff. Standardmäßig verwendet PostgreSQL einen Wert von 1, daher no-cache.

ZYKLUS

Mit der Zyklusklausel können Sie die Umwicklung angeben, wenn die Max- oder Min -Werte in der Sequenz erreicht werden. PostgreSQL verwendet min bzw. MaxValue, wenn die Grenze erreicht ist, wenn der Zyklus nicht angegeben ist.

GEHÖRT

Diese Option gibt an, mit der die Tabellenspalte die Sequenz zugeordnet ist. Wenn die Spalte oder Tabelle fallen gelassen wird, wird auch die Sequenz gelöscht.

Wenn die Sequenz keiner Tabelle oder Spalte zugeordnet ist, können Sie die Besitzen von None festlegen.

Führen Sie die Abfrage aus, um eine einfache Sequenz in PostgreSQL zu erstellen:

Erstellen Sie Sequenz my_seq
Inkrement um 1
Minwert 1
MaxValue 1000
Start 1
Im Besitz von my_table.my_column

Die obige Abfrage erstellt eine neue Sequenz, die in der Tabelle my_table zugeordnet ist.

In der folgenden Ressource können Sie mehr über PostgreSQL -Sequenzen untersuchen:

https: // www.PostgreSQL.org/docs/current/sql-createsequence.html

Sequenzen im SQL Server

Wie PostgreSQL sind Sequenzen auf dem SQL-Server benutzerdefinierte Objekte. Daher verwenden sie eine eng ähnliche Syntax für Sequenzen in PostgreSQL. Der einzige Unterschied ist die Syntax.

Die Beispielsyntax ist wie unten dargestellt:

Sequenz erstellen [schema_name.] sequence_name
[Als Integer_type]
[Start mit Start_Value]
[Increment by Increment_Value]
[Minvalue [min_value] | No minValue]
[MaxValue [max_value] | No maxValue]
[Zyklus | Kein Zyklus]
[Cache [cache_size] | No cache];

SQL Server verwendet anstelle von keiner keinen Zyklus und keinen Cache.

Sie können mehr über SQL Server -Sequenzen in der folgenden Ressource untersuchen:

https: // docs.Microsoft.com/en-us/sql/t-sql/Anweisungen/Erstellen-Sequenz-transact-sql?View = SQL-Server-VER15

Hinweis: Überprüfen Sie für Oracle -Datenbankbenutzer die folgende Ressource

https: // docs.Orakel.com/cd/b12037_01/server.101/B10759/Statements_6014.htm

Abschluss

Dieser detaillierte Artikel behandelte SQL -Sequenzen und wie wir sie in unseren Datenbanken verwenden können. Bleiben Sie dran für weitere Tutorials.