Diferenças entre “Chave Única” e “Chave Primária”

Respostas:

20

Uma tabela pode ter no máximo uma PRIMARY KEYrestrição, mas pode ter quantas quiser UNIQUE KEYrestrições.

As colunas que fazem parte do PRIMARY KEYdevem ser definidas como NOT NULL. Isso não é necessário para colunas que fazem parte de UNIQUE KEYrestrições. Se as colunas não forem Anuláveis, não haverá diferença entre Chaves Exclusivas e Primárias.

Outra pequena diferença é que você pode escolher o nome que deseja para uma UNIQUE KEYrestrição (e índice). Por outro lado, o PRIMARY KEYtem o nome padrão: PRIMARY.

ypercubeᵀᴹ
fonte
5

Uma grande diferença

  • Chave primária não permite colunas anuláveis
  • Chave exclusiva permite colunas anuláveis

Caso contrário, não há muita diferença ...

gbn
fonte
4

Algo que outros não apontaram:

  • Se você não declarar explicitamente uma PK nas tabelas do InnoDB, ela criará uma para você. Você não pode acessar, solicitar ou filtrar por essa chave implícita. Isso tem ramificações em termos de recursos, pois cada índice secundário contém um ponteiro de cópia para o PK da linha.
atxdba
fonte
3

A diferença mais importante está em seu propósito .

  • Chave Primária : O objetivo da Chave Primária é atuar como uma “CHAVE”. Uma chave primária é uma chave em um banco de dados relacional usado para identificar registros.
  • Índice exclusivo : o índice exclusivo é um "ÍNDICE" destinado ao desempenho. O Optimizer sabe que, para uma condição "em que x =: x", haverá apenas um registro como resultado - para que possa preparar um plano adequado para isso.
  • Restrição exclusiva : é uma " restrição " que garante que não haja valores duplicados nessa coluna. É uma restrição para a integridade dos dados.

Além do seu objetivo, os seguintes pontos são dignos de nota.

  • A menos que especificado de outra forma, a PRIMARY KEY tentará criar um ÍNDICE CLUSTERED (porém, este ponto é sobre o SQL Server, conforme mencionado no comentário)
  • Pode haver apenas uma CHAVE PRIMÁRIA por tabela; mas pode haver muitas restrições e índices exclusivos
  • PRIMARY KEY nem sempre é nula, mas as colunas com restrição exclusiva podem conter valores NULL
LCJ
fonte
1
A pergunta está marcada com o MySQL. Você não pode especificar o contrário, se a tabela usar o mecanismo InnoDB e tiver uma chave primária, esse é o índice em cluster. Sem escolha Talvez você estivesse pensando no SQL Server.
precisa saber é o seguinte