Ein Schlüssel ist nur ein normaler Index zu sehen. Ein Weg über die Vereinfachung ist es, es wie einen Kartenkatalog in einer Bibliothek zu sehen. Es weist MySQL in die richtige Richtung.
Ein eindeutiger Schlüssel wird auch für eine verbesserte Suchgeschwindigkeit verwendet, hat aber die Einschränkung, dass es keine doppelten Einträge geben kann (es gibt keine zwei x und y, wobei x nicht y und x == y ist).
Die manual erklärt es wie folgt:
ein eindeutiger Index erzeugt eine Beschränkung derart, dass alle Werte im Index unterscheiden müssen. Ein Fehler tritt auf, wenn Sie versuchen, eine neue Zeile mit einem Schlüsselwert hinzuzufügen, der einer vorhandenen Zeile entspricht. Diese Einschränkung gilt nicht für NULL-Werte mit Ausnahme der BDB-Speicher-Engine. Für andere Engines erlaubt ein UNIQUE-Index mehrere NULL-Werte für Spalten, die NULL enthalten können. Wenn Sie einen Präfixwert für eine Spalte in einem UNIQUE-Index angeben, müssen die Spaltenwerte innerhalb des Präfixes eindeutig sein.
Ein Primärschlüssel ist ein "spezieller" eindeutiger Schlüssel. Es ist im Grunde ein eindeutiger Schlüssel, außer dass es verwendet wird, um etwas zu identifizieren.
Das Handbuch erklärt, wie Indizes allgemein verwendet werden: here.
In MSSQL sind die Konzepte ähnlich. Es gibt Indizes, eindeutige Einschränkungen und Primärschlüssel.
Ungeprüfte, aber ich glaube, das MSSQL entspricht:
CREATE TABLE tmp (
id int NOT NULL PRIMARY KEY IDENTITY,
uid varchar(255) NOT NULL CONSTRAINT uid_unique UNIQUE,
name varchar(255) NOT NULL,
tag int NOT NULL DEFAULT 0,
description varchar(255),
);
CREATE INDEX idx_name ON tmp (name);
CREATE INDEX idx_tag ON tmp (tag);
Edit: der Code oben getestet wird, korrekt zu sein; Ich vermute jedoch, dass es eine viel bessere Syntax dafür gibt. Eine Weile, seit ich SQL Server benutzt habe, und anscheinend habe ich ziemlich viel vergessen :).
bezogen werden: [? MySQL des KEY Schlüsselwort] (http://stackoverflow.com/q/924265/697449) Grundsätzlich 'KEY' ist gleichbedeutend mit' INDEX'. –