Различия между «уникальным ключом» и «первичным ключом»

Ответы:

20

Таблица может иметь не более одного PRIMARY KEYограничения, но может иметь столько UNIQUE KEYограничений, сколько вы хотите .

Столбцы, которые являются частью, PRIMARY KEYдолжны быть определены как NOT NULL. Это не требуется для столбцов, которые являются частью UNIQUE KEYограничений. Если столбцы не обнуляются, то нет никакой разницы между уникальными и первичными ключами.

Другое незначительное отличие состоит в том, что вы можете выбрать имя, которое вы хотите для UNIQUE KEYограничения (и индекса). С другой стороны, PRIMARY KEYимеет имя по умолчанию: PRIMARY.

ypercubeᵀᴹ
источник
5

Одно главное отличие

  • Первичный ключ запрещает обнуляемые столбцы
  • Уникальный ключ позволяет обнулять столбцы

В противном случае, нет большой разницы ...

ГБН
источник
4

Что-то другие не указали

  • Если вы явно не объявите PK в таблицах InnoDB, он создаст его для вас. Вы не можете получить доступ, заказать или фильтровать по этому неявному ключу. Это имеет последствия с точки зрения ресурсов, поскольку каждый вторичный индекс содержит указатель копирования на PK строки.
atxdba
источник
3

Самое важное отличие заключается в их предназначении .

  • Первичный ключ : цель первичного ключа - действовать как «КЛЮЧ». Первичный ключ - это ключ в реляционной базе данных, используемый для идентификации записей.
  • Уникальный индекс : Уникальный индекс - это «ИНДЕКС», предназначенный для производительности. Оптимизатор знает, что для условия «где x =: x» будет только одна запись, поэтому он может подготовить подходящий для этого план.
  • Уникальное ограничение : это ограничение, которое гарантирует, что в этом столбце нет повторяющихся значений. Это ограничение целостности данных.

Помимо их назначения, заслуживают внимания следующие пункты.

  • Если не указано иное, PRIMARY KEY попытается создать индекс CLUSTERED (хотя этот момент касается SQL Server, как упоминалось в комментарии)
  • В таблице может быть только один ПЕРВИЧНЫЙ КЛЮЧ; но может быть много уникальных ограничений и уникальных индексов
  • PRIMARY KEY всегда не равен NULL, но столбцы с уникальным ограничением могут содержать значения NULL
LCJ
источник
1
Вопрос помечен MySQL. Вы не можете указать иначе, если таблица использует механизм InnoDB и имеет первичный ключ, то это кластеризованный индекс. Нет выбора. Возможно, вы думали о SQL Server.
ypercubeᵀᴹ 13.09.16