Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

MySQL - Значение на ПЪРВИЧЕН КЛЮЧ, УНИКАЛЕН КЛЮЧ и КЛЮЧ, когато се използват заедно при създаване на таблица

Ключът е просто нормален индекс. Един начин над опростяването е да го мислим като каталог с карти в библиотека. Насочва MySQL в правилната посока.

Уникален ключ също се използва за подобрена скорост на търсене, но той има ограничението, че не може да има дублирани елементи (няма две x и y, където x не е y и x ==y).

Ръководството го обяснява по следния начин:

УНИКАЛЕН индекс създава ограничение, така че всички стойности в индекса трябва да бъдат различни. Възниква грешка, ако се опитате да добавите нов ред с akey стойност, която съответства на съществуващ ред. Това ограничение не се прилага за NULL стойности, с изключение на механизма за съхранение на BDB. За други машини, индексът UNIQUE позволява множество NULL стойности за колони, които могат да съдържат NULL. Ако посочите стойност на префикс за колона в УНИКАЛЕН индекс, стойностите на колоната трябва да са уникални в рамките на префикса.

Първичният ключ е „специален“ уникален ключ. По същество това е уникален ключ, с изключение на това, че се използва за идентифициране на нещо.

Ръководството обяснява как се използват индексите като цяло:тук.

В MSSQL концепциите са сходни. Има индекси, уникални ограничения и първични ключове.

Не е тестван, но вярвам, че еквивалентът на MSSQL е:

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);

Редактиране:кодът по-горе е тестван за правилен; обаче подозирам, че има много по-добър синтаксис за това. Измина известно време, откакто използвах SQL сървър и явно съм забравил доста :).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изтрия големи данни от таблица в SQL без дневник?

  2. Чувствителност на регистъра на Postgres

  3. Atomic UPSERT в SQL Server 2005

  4. Как да преместя pandas DataFrame в таблицата на Microsoft SQL Server?

  5. Математически функции на SQL Server (пълен списък)