Ähnlich wie MySQL, PostgreSQL, Oracle und viele andere relationale Datenbanken wird SQL Server am besten verwendet, wenn den meisten Datenbanktabellen eindeutige Primärschlüssel zugewiesen werden.
Die Verwendung von numerischen, automatisch inkrementierten Primärschlüsseln hat zahlreiche Vorteile, aber die wirkungsvollsten Vorteile sind die schnellere Geschwindigkeit bei der Durchführung von Abfragen und die Datenunabhängigkeit beim Durchsuchen von Tausenden von Datensätzen, die möglicherweise häufig geänderte Daten an anderer Stelle in der Tabelle enthalten. Mit einer konsistenten und eindeutigen numerischen Kennung können Anwendungen diese schnelleren und zuverlässigeren Abfragen nutzen.
Grundlegende Tabellenerstellung
Sobald Sie mit Ihrem SQL Server verbunden sind, beginnen Sie normalerweise mit CREATING
eine neue Tabelle, die das Feld enthält, das Sie als inkrementierten Primärschlüssel verwenden möchten. Für unser Beispiel bleiben wir bei der altbewährten id
Feld:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Das Problem hierbei ist, dass wir unsere id
nicht kontrollieren können Feld. Wenn ein neuer Datensatz eingefügt wird, müssen wir nicht nur manuell einen Wert für id
eingeben , aber wir müssen vorher eine Abfrage durchführen, um zu versuchen, diese id
zu verifizieren Wert existiert noch nicht (bei vielen gleichzeitigen Verbindungen nahezu unmöglich).
Identitäts- und Primärschlüsselbeschränkungen verwenden
Es stellt sich heraus, dass die Lösung zwei Einschränkungsoptionen verwendet, die von SQL Server bereitgestellt werden.
Der erste ist PRIMARY KEY
, die, wie der Name schon sagt, die angegebene Spalte dazu zwingt, sich als vollständig eindeutiger Index für die Tabelle zu verhalten, was schnelles Suchen und Abfragen ermöglicht.
Während SQL Server nur einen PRIMARY KEY
zulässt Einschränkung, die einer einzelnen Tabelle zugewiesen ist, diesem PRIMARY KEY
kann für mehr als eine Spalte definiert werden. In einem Szenario mit mehreren Spalten können einzelne Spalten doppelte, nicht eindeutige Werte enthalten, aber den PRIMARY KEY
Einschränkung stellt sicher, dass jede Kombination von eingeschränkten Werten sind tatsächlich relativ zu jeder anderen Kombination eindeutig.
Das zweite Puzzleteil ist die IDENTITY
Einschränkung, die SQL Server darüber informiert, den numerischen Wert in der angegebenen Spalte automatisch zu erhöhen, wenn ein neuer Datensatz INSERTED
wird . Während IDENTITY
kann akzeptiert zwei Argumente des numerischen seed
wo die Werte beginnen, sowie das increment
, werden diese Werte normalerweise nicht mit IDENTITY
angegeben Einschränkung und werden stattdessen als Standard belassen (beide standardmäßig auf 1
).
Mit diesem neuen Wissen an unseren Fingerspitzen können wir unsere vorherige CREATE TABLE
umschreiben -Anweisung, indem Sie unsere beiden neuen Einschränkungen hinzufügen.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Das ist alles dazu. Jetzt die id
Spalte unserer books
Tabelle wird bei jedem INSERT
automatisch inkrementiert und die id
-Feld ist garantiert ebenfalls ein eindeutiger Wert.