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!