Diferencias entre "Clave única" y "Clave primaria"

Respuestas:

20

Una tabla puede tener como máximo una PRIMARY KEYrestricción, pero puede tener tantas UNIQUE KEYrestricciones como desee .

Las columnas que forman parte de PRIMARY KEYdeben definirse como NOT NULL. Eso no es necesario para las columnas que forman parte de las UNIQUE KEYrestricciones. Si las columnas no son anulables, entonces no hay diferencia entre las claves únicas y primarias.

Otra diferencia menor es que puede elegir el nombre que desee para una UNIQUE KEYrestricción (e índice). Por otro lado, la PRIMARY KEYtiene el nombre por defecto: PRIMARY.

ypercubeᵀᴹ
fuente
5

Una gran diferencia

  • La clave primaria no permite columnas anulables
  • Clave única que permite columnas anulables

De lo contrario, no hay mucha diferencia ...

gbn
fuente
4

Algo que otros no han señalado:

  • Si no declara explícitamente un PK en las tablas de InnoDB, creará uno debajo de las cubiertas para usted. No puede acceder, ordenar o filtrar por esta clave implícita. Esto tiene ramificaciones en términos de recursos, ya que cada índice secundario contiene un puntero de copia al PK de la fila.
atxdba
fuente
3

La diferencia más importante está en su propósito .

  • Clave primaria : El propósito de la clave primaria es actuar como una "CLAVE". Una clave primaria es una clave en una base de datos relacional utilizada para identificar registros.
  • Índice único : El índice único es un "ÍNDICE" destinado al rendimiento. El optimizador sabe que para una condición "donde x =: x” solo habrá un registro como resultado, por lo que puede preparar un plan adecuado para eso.
  • Restricción única : es una "RESTRICCIÓN" que asegura que no haya valores duplicados en esa columna. Es una restricción para la integridad de los datos.

Además de su propósito, los siguientes puntos son notables.

  • A menos que se especifique lo contrario, PRIMARY KEY intentará crear un ÍNDICE EN CLUSTER (este punto es sobre SQL Server, como se menciona en el comentario)
  • Solo puede haber una CLAVE PRIMARIA por tabla; pero puede haber muchas restricciones únicas e índices únicos
  • PRIMARY KEY no siempre es nulo, pero las columnas con restricción única pueden contener valores NULL
LCJ
fuente
1
La pregunta está etiquetada MySQL. No puede especificar lo contrario, si la tabla usa el motor InnoDB y tiene una clave primaria, entonces este es el índice agrupado. Sin elección. Quizás estabas pensando en SQL Server.
ypercubeᵀᴹ