PostgreSQL - AUTO INCREMENT

Hallo, angehende Datenbankenthusiasten! Heute tauchen wir in eine der nützlichsten Funktionen in PostgreSQL ein: die AUTO INCREMENT-Funktionalität. Als Ihr freundlicher Nachbarcomputerlehrer freue ich mich darauf, Sie durch dieses Thema zu führen, auch wenn Sie完全neu im Programmieren sind. Also, holen Sie sich eine Tasse Kaffee und lassen Sie uns gemeinsam diese Lernreise antreten!

PostgreSQL -  Auto Increment

Was ist AUTO INCREMENT?

Bevor wir ins Detail gehen, lassen Sie uns verstehen, was AUTO INCREMENT eigentlich bedeutet. Stellen Sie sich vor, Sie organisieren eine große Party und müssen jedem Gast eine eindeutige Nummer zuweisen. Wär es nicht großartig, wenn Sie einen magischen Zähler hätten, der automatisch für jeden neuen Gast erhöht wird? Das ist im Wesentlichen, was AUTO INCREMENT in Datenbanken macht!

In PostgreSQL ist AUTO INCREMENT eine Funktion, die automatisch eine eindeutige Nummer für jede neue Zeile in einer Tabelle generiert. Es ist besonders nützlich, wenn Sie einen eindeutigen Identifikator für jeden Datensatz benötigen, wie z.B. eine Kunden-ID oder eine Auftragsnummer.

Syntax

Nun schauen wir uns an, wie wir AUTO INCREMENT in PostgreSQL verwenden können. Die Syntax ist relativ einfach, aber keine Sorge, wenn sie initially etwas einschüchternd aussieht. Wir werden sie Schritt für Schritt durchbrechen.

CREATE TABLE table_name (
column_name SERIAL PRIMARY KEY,
other_column1 data_type,
other_column2 data_type,
...
);

Lassen Sie uns diese Syntax analysieren:

  1. CREATE TABLE table_name: Dieser Teil erstellt eine neue Tabelle mit dem von Ihnen angegebenen Namen.
  2. column_name SERIAL PRIMARY KEY: Hier geschieht das Magische!
  • column_name ist der Name, den Sie Ihrer auto-inkrementierenden Spalte geben möchten.
  • SERIAL ist ein PostgreSQL-spezifischer Datentyp, der eine auto-inkrementierende Integer-Spalte erstellt.
  • PRIMARY KEY stellt sicher, dass diese Spalte eindeutige Werte enthält und zur Identifizierung jeder Zeile verwendet werden kann.
  1. Der Rest der Zeilen definiert andere Spalten in Ihrer Tabelle.

Beispiel

Lassen Sie uns dies mit einem realen Beispiel in die Praxis umsetzen. Stellen wir uns vor, wir erstellen eine Datenbank für eine kleine Bibliothek. Wir möchten die Bücher verfolgen, und jedes Buch sollte eine eindeutige ID haben.

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(100) NOT NULL,
publication_year INTEGER
);

In diesem Beispiel:

  • book_id ist unsere auto-inkrementierende Spalte. Sie wird automatisch eine eindeutige Nummer für jedes neue Buch zuweisen.
  • title und author sind VARCHAR-Spalten, um den Buchtitel und den Namen des Autors zu speichern.
  • publication_year ist eine INTEGER-Spalte, um das Erscheinungsjahr des Buches zu speichern.

Nun fügen wir einige Bücher unserer Tabelle hinzu:

INSERT INTO books (title, author, publication_year)
VALUES ('To Kill a Mockingbird', 'Harper Lee', 1960);

INSERT INTO books (title, author, publication_year)
VALUES ('1984', 'George Orwell', 1949);

INSERT INTO books (title, author, publication_year)
VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 1925);

Beachten Sie, dass wir keine Angabe für book_id gemacht haben. PostgreSQL wird diese Werte automatisch für uns generieren. Wenn wir jetzt unsere Tabelle abfragen:

SELECT * FROM books;

Wir könnten etwas wie dies sehen:

book_id title author publication_year
1 To Kill a Mockingbird Harper Lee 1960
2 1984 George Orwell 1949
3 The Great Gatsby F. Scott Fitzgerald 1925

Wie Sie sehen können, hat PostgreSQL automatisch eindeutige book_id-Werte für jede Zeile zugewiesen, beginnend mit 1 und um 1 für jeden neuen Eintrag erhöht.

Hinter den Kulissen

Nun mogą Sie sich fragen, "Wie weiß PostgreSQL, welche Zahl als nächstes verwendet werden soll?" Great question! Dahinter verwendet PostgreSQL eine Sequenz, um die nächste verfügbare Zahl zu verfolgen.

Wenn Sie den SERIAL-Datentyp verwenden, erstellt PostgreSQL automatisch eine Sequenz für diese Spalte. Eine Sequenz ist wie ein Zähler, der sich an die letzte ausgelieferte Zahl erinnert und weiß, dass er die nächste Zahl herausgeben soll, wenn er gefragt wird.

Sie können tatsächlich diese Sequenz sehen, wenn Sie die Tabellendetails ansehen:

\d books

Dieser Befehl zeigt Ihnen etwas wie dies:

Table "public.books"
Column      |          Type          | Collation | Nullable |           Default
-----------------+------------------------+-----------+----------+------------------------------
book_id         | integer                |           | not null | nextval('books_book_id_seq'::regclass)
title           | character varying(100) |           | not null |
author          | character varying(100) |           | not null |
publication_year| integer                |           |          |
Indexes:
"books_pkey" PRIMARY KEY, btree (book_id)

Sehen Sie das nextval('books_book_id_seq'::regclass) Teil? Das ist PostgreSQL, das die Sequenz verwendet, um den nächsten Wert für book_id zu erhalten.

Ein Wort der Warnung

Obwohl AUTO INCREMENT äußerst nützlich ist, ist es wichtig zu bedenken, dass es keine aufeinanderfolgenden Zahlen ohne Lücken garantiert. Wenn Sie eine Zeile einfügen und dann löschen, wird diese Zahl nicht wiederverwendet. Dies ist actually ein guter Punkt für die Datenintegrität, aber es ist etwas zu beachten.

Zum Beispiel, wenn wir das zweite Buch löschen:

DELETE FROM books WHERE book_id = 2;

Und dann ein neues Buch einfügen:

INSERT INTO books (title, author, publication_year)
VALUES ('Pride and Prejudice', 'Jane Austen', 1813);

Unsere Tabelle könnte wie folgt aussehen:

book_id title author publication_year
1 To Kill a Mockingbird Harper Lee 1960
3 The Great Gatsby F. Scott Fitzgerald 1925
4 Pride and Prejudice Jane Austen 1813

Beachten Sie, dass book_id 2 fehlt und das neue Buch book_id 4 erhalten hat.

Fazit

Und das war's, Leute! Sie haben gerade AUTO INCREMENT in PostgreSQL gelernt. Wir haben besprochen, was es ist, wie man es verwendet und sogar einen Blick unter die Haube geworfen, um zu sehen, wie es funktioniert. Erinnern Sie sich daran, dass AUTO INCREMENT wie ein hilfreicher Bibliothekar ist, der automatisch eine eindeutige Nummer an jedes neue Buch vergibt, das eintrifft, und Ihnen die Mühe erspart, selbst nachzudenken.

Wenn Sie Ihre Reise in der Welt der Datenbanken fortsetzen, werden Sie AUTO INCREMENT als treuen Begleiter finden, der Ihr Leben einfacher macht, wenn Sie eindeutige Identifikatoren zuweisen müssen. Üben Sie weiter, bleiben Sie neugierig, und bald werden Sie ein PostgreSQL-Zauberer sein!

Frohes Coden und möge Ihre Abfragen stets die Ergebnisse liefern, die Sie erwarten!

Credits: Image by storyset