Maison  >  Article  >  base de données  >  Explication détaillée des différences entre clé, clé primaire, clé unique et index dans MySQL

Explication détaillée des différences entre clé, clé primaire, clé unique et index dans MySQL

藏色散人
藏色散人avant
2020-04-12 13:57:573566parcourir

1. La différence entre la clé et la clé primaire

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

Recommandé : "Tutoriel vidéo MySQL"

Analyse :

KEY wh_logrecord_user_name (user_name)

Le champ user_name de cette table établit une clé étrangère avec le champ user_name de la table wh_logrecord_user_name

À l'extérieur des parenthèses se trouve la table correspondante pour établir la clé étrangère, et à l'intérieur des parenthèses se trouve le champ correspondant

De même, il y a KEY user (userid)

Bien sûr, les clés ne peuvent pas toutes être des clés étrangères

Résumé :

Clé est une contrainte d'indexation. L'indexation des champs de la table se fait via Créé par un unique étranger principal, etc. Les clés étrangères sont couramment utilisées, qui sont utilisées pour les associations de clés étrangères.

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

Par exemple, lors de la création d'une table : forum CLÉ (statut, type, ordre d'affichage)

sélectionnez * dans le groupe de table par statut, type,displayorder Cet index est-il automatiquement utilisé ?

Cet index est-il utile lors de la sélection de * dans un groupe de tables par statut ?

Objectif de la clé : principalement utilisée pour accélérer les requêtes.

2. La différence entre KEY et INDEX

Remarque : je suis toujours confus à propos de cette partie.

KEY est généralement synonyme d'INDEX. PRIMARY KEY peut également être spécifié comme KEY uniquement si l'attribut de mot-clé PRIMARY KEY est donné dans la définition de la colonne. Ceci est fait pour des raisons de compatibilité avec d'autres systèmes de bases de données. PRIMARY KEY est une KEY unique. À l'heure actuelle, toutes les colonnes de clé doivent être définies comme NOT NULL. Si ces colonnes ne sont pas explicitement définies comme NOT NULL, MySQL doit définir ces colonnes implicitement. Il n'y a qu'une seule CLÉ PRIMAIRE pour une table.

La différence entre Index et Key dans MySQL

Key est la valeur clé, qui fait partie du relationnel théorie des modèles Les parties, telles que la clé primaire, la clé étrangère, etc., sont utilisées pour la vérification de l'intégrité des données et les contraintes d'unicité, etc. L'index est au niveau de l'implémentation. Par exemple, vous pouvez indexer n'importe quelle colonne d'une table. Ensuite, lorsque la colonne indexée est dans la condition Where dans l'instruction SQL, vous pouvez obtenir un emplacement rapide des données et donc une récupération rapide. Quant à l'index unique, il ne s'agit que d'un type d'index. La création d'un index unique signifie que les données de cette colonne ne peuvent pas être répétées. Je suppose que MySQL peut optimiser davantage l'index de type Index unique.

Ainsi, lors de la conception de la table, la clé doit uniquement être au niveau du modèle, et lorsqu'une optimisation des requêtes est requise, l'indexation des colonnes pertinentes peut être effectuée.

De plus, dans MySQL, pour une colonne de clé primaire, MySQL a automatiquement établi un index unique pour celle-ci, il n'est donc pas nécessaire de créer à plusieurs reprises un index dessus.

Une explication trouvée :

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. Il y a UNIQUE KEY et PRIMARY KEY dans mysql Quoi Quelle est la différence ?

1. Une ou plusieurs colonnes de clé primaire doivent être NON NULL. Si une colonne est NULL, lors de l'ajout de PRIMARY KEY, la colonne deviendra automatiquement NOT NULL. UNIQUE KEY n'a pas cette exigence pour les colonnes

2. Une table ne peut avoir qu'une seule PRIMARY KEY, mais peut avoir plusieurs UNIQUE KEY

. 3. Les contraintes de clé primaire et de clé unique sont implémentées via l'index de référence, si les valeurs insérées sont toutes NULL, alors selon le principe de l'index, toutes les valeurs NULL ne seront pas enregistrées sur l'index, donc lors de l'insertion. toutes les valeurs NULL, il peut y avoir des doublons. D'autres ne peuvent pas insérer de valeurs en double.

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. Utiliser UNIQUE KEY

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

Utilisation de UNIQUE KEY : principalement utilisé pour éviter la duplication lors de l'insertion de données.

1, lors de la création d'une table

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

Si vous devez nommer des contraintes UNIQUE et définir des contraintes UNIQUE pour plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :

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, when Lorsque la table a été créée, si vous devez créer une contrainte UNIQUE sur la colonne "Id_P", veuillez utiliser le SQL suivant :

ALTER TABLE Persons
ADD UNIQUE (Id_P)

Si vous devez nommer la contrainte UNIQUE et définir des contraintes UNIQUE pour plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :

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

3, révoquez la contrainte UNIQUE

Si vous devez révoquer la contrainte UNIQUE, veuillez utiliser le SQL suivant :

ALTER TABLE Persons
DROP INDEX uc_PersonID

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer