Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Unterschiede zwischen Schlüssel, Primärschlüssel, eindeutigem Schlüssel und Index in MySQL

Detaillierte Erläuterung der Unterschiede zwischen Schlüssel, Primärschlüssel, eindeutigem Schlüssel und Index in MySQL

藏色散人
藏色散人nach vorne
2020-04-12 13:57:573370Durchsuche

1. Der Unterschied zwischen Schlüssel und Primärschlüssel

CREATE TABLE wh_logrecord (
logrecord_id int(11) NOT NULL auto_increment,
user_name varchar(100) default NULL,
operation_time datetime default NULL,
logrecord_operation varchar(100) default NULL,
PRIMARY KEY (logrecord_id),
KEY wh_logrecord_user_name (user_name)
)

Empfohlen: „MySQL-Video-Tutorial

Analyse:

KEY wh_logrecord_user_name (user_name)

Das Feld „user_name“ dieser Tabelle erstellt einen Fremdschlüssel mit dem Feld „user_name“ der Tabelle „wh_logrecord_user_name“

Außerhalb der Klammern befindet sich die entsprechende Tabelle zum Festlegen des Fremdschlüssels und innerhalb der Klammern befindet sich das entsprechende Feld

Ebenso gibt es KEY user(userid)

Natürlich sind nicht alle Schlüssel Fremdschlüssel

Zusammenfassung:

Schlüssel ist eine Indexeinschränkung. Die Indizierung von Feldern in der Tabelle erfolgt über „Erstellt durch primäre fremde Eindeutigkeit“ usw. Häufig werden Fremdschlüssel verwendet, die für Fremdschlüsselzuordnungen verwendet werden.

KEY forum (status,type,displayorder) # 是多列索引(键)
KEY tid (tid) # 是单列索引(键)。

Zum Beispiel beim Erstellen einer Tabelle: SCHLÜSSEL-Forum (Status, Typ, Anzeigereihenfolge)

Wählen Sie * aus der Tabellengruppe nach Status aus, Typ, Anzeigereihenfolge Wird dieser Index automatisch verwendet?

Ist dieser Index nützlich, wenn Sie * aus der Tabellengruppe nach Status auswählen?

Zweck des Schlüssels: Wird hauptsächlich zur Beschleunigung der Abfrage verwendet.

2. Der Unterschied zwischen KEY und INDEX

Hinweis: Ich bin immer noch verwirrt über diesen Teil.

KEY ist normalerweise ein Synonym für INDEX. PRIMARY KEY kann auch nur dann als KEY angegeben werden, wenn das Schlüsselwortattribut PRIMARY KEY in der Spaltendefinition angegeben ist. Dies geschieht aus Kompatibilitätsgründen mit anderen Datenbanksystemen. PRIMÄRSCHLÜSSEL ist ein eindeutiger SCHLÜSSEL. Zu diesem Zeitpunkt müssen alle Schlüsselspalten als NICHT NULL definiert sein. Wenn diese Spalten nicht explizit als NOT NULL definiert sind, sollte MySQL diese Spalten implizit definieren. Eine Tabelle hat nur einen PRIMÄRSCHLÜSSEL.

Der Unterschied zwischen Index und Schlüssel in MySQL

Schlüssel ist der Schlüsselwert, der Teil der Relation ist Modelltheorie Teile wie Primärschlüssel, Fremdschlüssel usw. werden für die Überprüfung der Datenintegrität und Eindeutigkeitsbeschränkungen usw. verwendet. Der Index befindet sich auf der Implementierungsebene. Sie können beispielsweise jede Spalte einer Tabelle indizieren. Wenn sich die indizierte Spalte dann in der SQL-Anweisung in der Where-Bedingung befindet, können Sie eine schnelle Datenlokalisierung und damit einen schnellen Abruf erhalten. Was den Unique Index betrifft, handelt es sich nur um einen Indextyp. Die Einrichtung eines Unique Index bedeutet, dass die Daten in dieser Spalte meiner Meinung nach den Index des Unique Index weiter optimieren können.

Beim Entwerfen der Tabelle muss sich der Schlüssel also nur auf Modellebene befinden, und wenn eine Abfrageoptimierung erforderlich ist, kann die Indizierung der relevanten Spalten erfolgen.

Darüber hinaus hat MySQL in MySQL für eine Primärschlüsselspalte automatisch einen eindeutigen Index dafür eingerichtet, sodass nicht wiederholt ein Index dafür erstellt werden muss.

Eine Erklärung gefunden:

Note that “primary” is called PRIMARY KEY not INDEX.
KEY is something on the logical level, describes your table and database design (i.e. enforces referential integrity…)
INDEX is something on the physical level, helps improve access time for table operations.
Behind every PK there is (usually) unique index created (automatically).

3. Es gibt EINZIGARTIGE SCHLÜSSEL und PRIMÄRSCHLÜSSEL in MySQL Was Ist der Unterschied?

1. Eine oder mehrere Spalten des Primärschlüssels müssen NICHT NULL sein. Wenn eine Spalte NULL ist, ändert sich die Spalte automatisch in NICHT NULL. Für UNIQUE KEY gilt diese Anforderung nicht für Spalten

2. Eine Tabelle kann nur einen PRIMARY KEY haben, aber mehrere UNIQUE KEY

3. Primärschlüssel- und eindeutige Schlüsselbeschränkungen werden über den Referenzindex implementiert. Wenn die eingefügten Werte alle NULL sind, werden gemäß dem Prinzip des Index nicht alle NULL-Werte im Index aufgezeichnet Alle NULL-Werte können Duplikate enthalten. Andere können keine Duplikatwerte einfügen.

alter table t add constraint uk_t_1 unique (a,b);
insert into t (a ,b ) values (null,1);    # 不能重复
insert into t (a ,b ) values (null,null);#可以重复

4. Verwenden Sie den EINZIGARTIGEN SCHLÜSSEL

CREATE TABLE `secure_vulnerability_warning` (
  `id` int(10) NOT NULL auto_increment,
  `date` date NOT NULL,
  `type` varchar(100) NOT NULL,
  `sub_type` varchar(100) NOT NULL,
  `domain_name` varchar(128) NOT NULL,
  `url` text NOT NULL,
  `parameters` text NOT NULL,
  `hash` varchar(100) NOT NULL,
  `deal` int(1) NOT NULL,
  `deal_date` date default NULL,
  `remark` text,
  `last_push_time` datetime default NULL,
  `push_times` int(11) default '1',
  `first_set_ok_time` datetime default NULL,
  `last_set_ok_time` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `date` (`date`,`hash`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8

Verwendung des EINZIGARTIGEN SCHLÜSSELS: Wird hauptsächlich verwendet, um Duplikate beim Einfügen von Daten zu verhindern.

1, beim Erstellen einer Tabelle

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

Wenn Sie UNIQUE-Einschränkungen benennen und UNIQUE-Einschränkungen für mehrere Spalten definieren müssen, verwenden Sie bitte die folgende SQL-Syntax:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)

2, Wenn Sie nach der Erstellung der Tabelle eine EINZIGARTIGE Einschränkung für die Spalte „Id_P“ erstellen müssen, verwenden Sie bitte das folgende SQL:

ALTER TABLE Persons
ADD UNIQUE (Id_P)

Wenn Sie die EINZIGARTIGE Einschränkung benennen und EINZIGARTIGE Einschränkungen für mehrere definieren müssen Spalten verwenden Sie bitte die folgende SQL-Syntax:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

3, UNIQUE-Einschränkung aufheben

Wenn Sie die UNIQUE-Einschränkung aufheben müssen, verwenden Sie bitte die folgende SQL-Syntax:

ALTER TABLE Persons
DROP INDEX uc_PersonID

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Unterschiede zwischen Schlüssel, Primärschlüssel, eindeutigem Schlüssel und Index in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen