Una de las claves es sólo un índice normal. Una forma de simplificar es pensarlo como un catálogo de tarjetas en una biblioteca. Apunta a MySQL en la dirección correcta.
Una clave única también se usa para mejorar la velocidad de búsqueda, pero tiene la restricción de que no puede haber elementos duplicados (no hay dos x y y donde x no es y y x == y).
El manual lo explica de la siguiente manera:
un índice único crea una restricción de tal manera que todos los valores del índice de deben ser distintos. Se produce un error si intenta agregar una nueva fila con un valor de clave que coincida con una fila existente. Esta restricción no aplica a valores NULOS excepto para el motor de almacenamiento BDB. Para otros motores, un índice UNIQUE permite valores NULL múltiples para columnas que pueden contener NULL. Si especifica un valor de prefijo para una columna en un índice UNIQUE, , los valores de columna deben ser únicos dentro del prefijo.
Una clave principal es una clave única 'especial'. Básicamente es una clave única, excepto que se usa para identificar algo.
El manual explica cómo se usan los índices en general: here.
En MSSQL, los conceptos son similares. Hay índices, restricciones únicas y claves principales.
probado, pero creo que el MSSQL equivalente es:
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);
Editar: el código anterior se prueba para ser correcta; sin embargo, sospecho que hay una sintaxis mucho mejor para hacerlo. Hace tiempo que uso el servidor SQL, y aparentemente me olvidé bastante :).
relacionados: [? Palabra clave CLAVE de MySQL] (http://stackoverflow.com/q/924265/697449) Básicamente 'KEY' es sinónimo de' INDEX'. –