Maison > base de données > tutoriel mysql > Quelle est la différence entre la clé primaire et l'index unique

Quelle est la différence entre la clé primaire et l'index unique

青灯夜游
Libérer: 2023-01-05 16:10:29
original
16480 Les gens l'ont consulté

Différence : 1. La clé primaire est une contrainte, et l'index unique est un index. 2. Une fois la clé primaire créée, elle doit contenir un index unique. L'index unique n'est pas nécessairement la clé primaire. 3. La colonne d'index unique autorise les valeurs nulles, mais la colonne de clé primaire n'autorise pas les valeurs nulles. 4. La clé primaire peut être référencée en tant que clé étrangère par d'autres tables, mais pas l'index unique.

Quelle est la différence entre la clé primaire et l'index unique

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

La différence entre l'index de clé primaire et l'index unique

  • La clé primaire est une contrainte, l'index unique est un index, et les deux sont essentiellement différents.

  • Une fois la clé primaire créée, elle doit contenir un index unique. L'index unique n'est pas nécessairement la clé primaire.

  • Les colonnes d'index uniques autorisent les valeurs nulles, tandis que les colonnes de clé primaire n'autorisent pas les valeurs nulles.

  • Lorsque la colonne de clé primaire est créée, elle est par défaut une valeur nulle + un index unique.

  • Les clés primaires peuvent être référencées en tant que clés étrangères par d'autres tables, mais les index uniques ne le peuvent pas.

  • Une table ne peut créer qu'une seule clé primaire au maximum, mais plusieurs index uniques peuvent être créés.

  • Les clés primaires sont plus adaptées aux identifiants uniques qui ne sont pas faciles à modifier, tels que les colonnes à incrémentation automatique, les numéros d'identification, etc.

  • En mode RBO, la priorité du plan d'exécution de la clé primaire est supérieure à celle de l'index unique. Les deux peuvent améliorer la vitesse des requêtes.

Exemple :

-- Créer une table contenant uniquement la clé primaire et l'index unique

CREATE TABLE test
(PrimaryKey VARCHAR2(20),
  UniqueKey  VARCHAR2(20)
);
Copier après la connexion

-- Créez-les séparément Clé primaire et index unique, la syntaxe est différente

ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey);
Copier après la connexion
CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey);
Copier après la connexion

-- Deux noms d'index peuvent être vus dans USER_INDEXES

SELECT table_name,table_type,index_name,index_type,uniqueness
  FROM USER_INDEXES
  WHERE TABLE_NAME='TEST';
Copier après la connexion


-- Dans USER_IND_COLUMNS Vous pouvez voir deux noms de champs d'index

SELECT table_name,index_name,column_name,column_position
  FROM USER_IND_COLUMNS
  WHERE TABLE_NAME='TEST';
Copier après la connexion

--Sur USER_CONSTRAINTS, vous ne pouvez voir que le nom de la contrainte de clé primaire

SELECT table_name,constraint_name,constraint_type
  FROM USER_CONSTRAINTS
  WHERE TABLE_NAME='TEST';
Copier après la connexion


--Seul le nom du champ de contrainte de clé primaire peut être vu dans USER_CONS_COLUMNS

SELECT table_name,constraint_name,column_name,position
  FROM USER_CONS_COLUMNS
  WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME
          FROM USER_CONSTRAINTS
           WHERE TABLE_NAME='TEST');
Copier après la connexion

-- Ajouter une contrainte non nulle pour l'index unique

ALTER TABLE test MODIFY UniqueKey NOT NULL;
Copier après la connexion

- - Seuls les noms de contraintes de clé primaire et les noms de contraintes non nuls peuvent être vus dans USER_CONSTRAINTS

SELECT table_name,constraint_name,constraint_type
  FROM USER_CONSTRAINTS
  WHERE TABLE_NAME='TEST'
Copier après la connexion


--Uniquement le champ de contrainte de clé primaire les noms et les contraintes non nulles peuvent être vus dans USER_CONS_COLUMNS Nom du champ

SELECT table_name,constraint_name,column_name,position
  FROM USER_CONS_COLUMNS
  WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME
             FROM USER_CONSTRAINTS
             WHERE TABLE_NAME='TEST')
Copier après la connexion

Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal