sql >> Base de Datos >  >> RDS >> Sqlserver

MySQL:significado de PRIMARY KEY, UNIQUE KEY y KEY cuando se usan juntos al crear una tabla

Una clave es solo un índice normal. Una manera de simplificar es pensar en ello como un catálogo de fichas en una biblioteca. Apunta a MySQL en la dirección correcta.

También se usa una clave única para mejorar la velocidad de búsqueda, pero tiene la restricción de que no puede haber elementos duplicados (no hay dos x e y donde x no es y y x ==y).

El manual lo explica de la siguiente manera:

Un índice ÚNICO crea una restricción tal que todos los valores en el índice deben ser distintos. Se produce un error si intenta agregar una nueva fila con un valor clave que coincida con una fila existente. Esta restricción no se aplica a valores NULL excepto para el motor de almacenamiento BDB. Para otros motores, un índice ÚNICO permite múltiples valores NULL para columnas que pueden contener NULL. Si especifica un valor de prefijo para una columna en un índice ÚNICO, los valores de columna deben ser únicos dentro del prefijo.

Una clave primaria 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:aquí.

En MSSQL, los conceptos son similares. Hay índices, restricciones únicas y claves primarias.

No probado, pero creo que el equivalente de MSSQL 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:se prueba que el código anterior es correcto; sin embargo, sospecho que hay una sintaxis mucho mejor para hacerlo. Ha pasado un tiempo desde que usé el servidor SQL, y aparentemente me he olvidado un poco :).