sql >> Databáze >  >> RDS >> Sqlserver

MySQL - Význam PRIMARY KEY, UNIQUE KEY a KEY při společném použití při vytváření tabulky

Klíč je jen normální index. Cestou přes zjednodušení je představit si to jako lístkový katalog v knihovně. Ukazuje MySQL správným směrem.

Jedinečný klíč se také používá pro zvýšení rychlosti vyhledávání, ale má omezení, že nemohou existovat žádné duplicitní položky (neexistují dvě x a y, kde x není y a x ==y).

Návod to vysvětluje následovně:

UNIQUE index vytváří omezení, takže všechny hodnoty v indexu musí být odlišné. Pokud se pokusíte přidat nový řádek s hodnotou akey, která odpovídá existujícímu řádku, dojde k chybě. Toto omezení se nevztahuje na hodnoty NULL kromě úložiště BDB. U jiných strojů povoluje aUNIQUE index více hodnot NULL pro sloupce, které mohou obsahovat NULL. Pokud zadáte hodnotu předpony pro sloupec v indexu UNIQUE, hodnoty sloupce musí být v rámci předpony jedinečné.

Primární klíč je „speciální“ jedinečný klíč. V podstatě je to jedinečný klíč, kromě toho, že se používá k identifikaci něčeho.

Příručka vysvětluje, jak se indexy obecně používají:zde.

V MSSQL jsou koncepty podobné. Existují indexy, jedinečná omezení a primární klíče.

Netestováno, ale věřím, že ekvivalent MSSQL je:

CREATE TABLE tmp (
  id int NOT NULL PRIMARY KEY IDENTITY,
  uid varchar(255) NOT NULL CONSTRAINT uid_unique UNIQUE,
  name varchar(255) NOT NULL,
  tag int NOT NULL DEFAULT 0,
  description varchar(255),
);

CREATE INDEX idx_name ON tmp (name);
CREATE INDEX idx_tag ON tmp (tag);

Edit:výše uvedený kód je testován na správnost; mám však podezření, že na to existuje mnohem lepší syntaxe. Už je to nějaký čas, co jsem používal SQL server, a očividně jsem toho docela zapomněl :).



  1. Příklad jednoduchého příkazu sloučení v SQL Server

  2. Několik oblastí vylepšení v PostgreSQL 9.4

  3. Aktualizujte více sloupců ve spouštěcí funkci v plpgsql

  4. Jak mohu spustit nativní skript SQL v JPA/Hibernate?