it-swarm-eu.dev

Rozdíly mezi „jedinečným klíčem“ a „primárním klíčem“

Jaké jsou hlavní rozdíly mezi Unique Key a Primary Key v MySQL?

19
newuser

Tabulka může mít nejvýše jedno omezení PRIMARY KEY, Ale může mít tolik, kolik chcete UNIQUE KEY Omezení.

Sloupce, které jsou součástí PRIMARY KEY, Musí být definovány jako NOT NULL. To není vyžadováno pro sloupce, které jsou součástí omezení UNIQUE KEY. Pokud sloupce nejsou nulovatelné, není mezi Unique a Primary Keys žádný rozdíl.

Další malý rozdíl je v tom, že si můžete vybrat jméno, které chcete použít pro UNIQUE KEY Omezení (a index). Na druhé straně má PRIMARY KEY Výchozí název: PRIMARY.

24
ypercubeᵀᴹ

Jeden velký rozdíl

  • Primární klíč zakáže nulové sloupce
  • Unikátní klíč umožňuje nulovatelné sloupce

Jinak není velký rozdíl ...

7
gbn

Něco, o čem ostatní neuvedli:

  • Pokud explicitně nevyhlásíte PK v tabulkách InnoDB, vytvoří ho pod kryty pro vás. Pomocí tohoto implicitního klíče nemůžete přistupovat, objednávat ani filtrovat. To má důsledky ve smyslu zdrojů, protože každý sekundární index obsahuje ukazatel kopie na PK řádku.
4
atxdba

Nejdůležitější rozdíl je v jejich účel.

  • Primární klíč: Účelem Primárního klíče je fungovat jako „KLÍČ“. Primární klíč je klíč v relační databázi používané k identifikaci záznamů.
  • nikátní index: Unikátní index je „INDEX“ určený pro výkon. Optimalizátor ví, že pro podmínku „kde x =: x“ bude výsledkem pouze jeden záznam - takže může připravit plán vhodný pro tento účel.
  • nique Constraint: Jedná se o „CONSTRAINT“, který zajišťuje, že v tomto sloupci nejsou duplicitní hodnoty. Je to omezení integrity dat.

Kromě jejich účelu jsou následující body pozoruhodné.

  • Pokud není uvedeno jinak, PRIMARY KEY se pokusí vytvořit CLUSTERED INDEX (Tento bod je však o SQL Serveru, jak je uvedeno v komentáři)
  • V tabulce může být pouze jeden PRIMÁRNÍ KLÁVES; ale může existovat mnoho jedinečných omezení a jedinečných indexů
  • PRIMARY KEY není vždy null, ale sloupce s jedinečným omezením mohou obsahovat NULL hodnoty
3
LCJ