Maison >base de données >tutoriel mysql >Quelle est la différence entre la clé primaire et l'index unique
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.
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) );
-- 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);
CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey);
-- 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';
-- 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';
--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';
--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');
-- Ajouter une contrainte non nulle pour l'index unique
ALTER TABLE test MODIFY UniqueKey NOT NULL;
- - 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'
--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')
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!