2010-03-16 34 views

Respuesta

8

La diferente es: La clave principal creará un índice agrupado por defecto y solo una PK puede existir en una tabla. La clave principal puede abarcar varias columnas (clave compuesta)

+5

Puede tener restricciones únicas que abarcan múltiples columnas. – Thilo

4

No ambos no son iguales pero son similares, cuando una columna es Única tiene valores únicos pero también permite un valor Nulo en esa columna, pero Primario no permite ningún valor nulo . La clave principal se puede usar como referencia en alguna otra tabla.

Sólo puede tener una clave primaria en una tabla sino múltiple Clave única

Cuando se declara una restricción UNIQUE, SQL Server crea un índice único para acelerar el proceso de búsqueda de duplicados. En este caso, el índice se establece de manera predeterminada en el índice NONCLUSTERED, porque puede tener solo un índice CLUSTERED por tabla.

  • El número de restricciones ÚNICAS por tabla está limitado por el número de índices en la tabla, es decir, 249 índice NO CULPABLE y un posible índice CLUSTERED.

Contrariamente a la tecla PRIMARY Las restricciones UNIQUE pueden aceptar NULL pero solo una vez. Si la restricción se define en una combinación de campos, entonces cada campo puede aceptar NULL y puede tener algunos valores en ellos, siempre que los valores de combinación sean únicos.

Happy Coding !!!

+0

"Las restricciones ÚNICAS pueden aceptar NULO pero solo una vez": Eso contradice lo que dijo AvatarKava: Las claves ÚNICAS pueden ser NULAS, y se permiten múltiples valores NULOS. ¿Cuál es? – Thilo

+2

desde: http://dev.mysql.com/doc/refman/5.0/en/create-index.html Un índice UNIQUE 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 valores NULL múltiples 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. – AvatarKava

+1

La pregunta está etiquetada como "mysql", pero creo que Oracle también permite múltiples valores NULL (dos NULL nunca se consideran iguales). Esa parece ser la convención más natural. – Thilo

0

No. Hacer que una columna sea única es muy diferente de convertirla en una clave principal o en parte de la clave principal.

13

Nope.

Las TECLAS PRIMARIAS deben ser ÚNICAS, pero las claves ÚNICAS no necesitan ser primarias. Puede tener múltiples claves ÚNICAS en una tabla.

La diferencia clave es que las claves PRIMARY no pueden tener valores NULL, ya que deben identificar de manera única una fila. Las claves ÚNICAS pueden ser NULL y se permiten múltiples valores NULL (a menos que esté usando un motor de tabla poco común como BDB).

+1

Ugh que fue un juego de palabras involuntariamente horrible. – AvatarKava

+0

Parece que recuerdo haber intentado crear un índice único en una tabla y no poder hacerlo debido a múltiples valores NULL, pero debo estar tropezando. – Duncan

+0

Podría haber estado de vuelta en 4.x, Duncan - Creo que tenían esa restricción en ese momento: http://dev.mysql.com/doc/refman/5.0/en/create-index.html – AvatarKava

4

UNIQUE aún puede ser NULL.

PRIMARY KEY significa UNIQUE y NOT NULL y solo puede haber una PRIMARY KEY por mesa.

Cuestiones relacionadas