Unterschiede zwischen "Unique Key" und "Primary Key"

Antworten:

20

Eine Tabelle kann höchstens eine PRIMARY KEYEinschränkung enthalten, jedoch beliebig viele UNIQUE KEYEinschränkungen.

Spalten, die Teil von sind, PRIMARY KEYmüssen definiert werden als NOT NULL. Dies ist für Spalten, die Teil von UNIQUE KEYEinschränkungen sind, nicht erforderlich . Wenn die Spalten nicht NULL-fähig sind, gibt es keinen Unterschied zwischen eindeutigen und Primärschlüsseln.

Ein weiterer kleiner Unterschied besteht darin, dass Sie den gewünschten Namen für eine UNIQUE KEYEinschränkung (und einen Index) auswählen können . Auf der anderen Seite, die PRIMARY KEYden Standardnamen: PRIMARY.

ypercubeᵀᴹ
quelle
5

Ein großer Unterschied

  • Primärschlüssel verbietet nullfähige Spalten
  • Der eindeutige Schlüssel ermöglicht nullfähige Spalten

Ansonsten gibt es keinen großen Unterschied ...

gbn
quelle
4

Etwas, worauf andere nicht hingewiesen haben:

  • Wenn Sie eine PK in InnoDB-Tabellen nicht explizit deklarieren, erstellt sie eine PK für Sie. Sie können nicht nach diesem impliziten Schlüssel zugreifen, bestellen oder filtern. Dies hat Auswirkungen auf die Ressourcen, da jeder Sekundärindex einen Kopierzeiger auf die PK der Zeile enthält.
atxdba
quelle
3

Der wichtigste Unterschied liegt in ihrem Zweck .

  • Primärschlüssel : Der Primärschlüssel soll als „SCHLÜSSEL“ fungieren. Ein Primärschlüssel ist ein Schlüssel in einer relationalen Datenbank, mit dem Datensätze identifiziert werden.
  • Einzigartiger Index : Der einzigartige Index ist ein „INDEX“, der für die Wertentwicklung bestimmt ist. Der Optimierer weiß, dass es für eine Bedingung "wobei x =: x" nur einen Datensatz gibt, sodass er einen entsprechenden Plan erstellen kann.
  • Einzigartige Einschränkung : Es handelt sich um eine "Einschränkung", die sicherstellt, dass diese Spalte keine doppelten Werte enthält. Dies ist eine Einschränkung für die Datenintegrität.

Abgesehen von ihrem Zweck sind folgende Punkte bemerkenswert.

  • Sofern nicht anders angegeben, versucht PRIMARY KEY, einen CLUSTERED INDEX zu erstellen.
  • Es kann nur einen PRIMARY KEY pro Tabelle geben. Es kann jedoch viele eindeutige Einschränkungen und eindeutige Indizes geben
  • PRIMARY KEY ist immer nicht null, aber Spalten mit eindeutiger Einschränkung können NULL-Werte enthalten
LCJ
quelle
1
Die Frage ist mit MySQL markiert. Sie können nichts anderes angeben. Wenn die Tabelle die InnoDB-Engine verwendet und einen Primärschlüssel hat, ist dies der Clustered-Index. Keine Wahl. Vielleicht haben Sie über SQL Server nachgedacht.
ypercubeᵀᴹ