Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer une clé primaire composite dans MySQL

Parfois, vous devrez peut-être créer une clé primaire composite composée de plusieurs champs, pour les tables de base de données. Voici comment créer une clé primaire composite dans MySQL.

Comment créer une clé primaire composite dans MySQL

Voici les étapes pour créer une clé primaire composite dans MySQL. Vous pouvez créer une clé primaire composite, soit lors de la création de la table à l'aide de l'instruction CREATE TABLE, soit après la création de tables à l'aide de l'instruction ALTER TABLE. Nous examinerons ces deux exemples pour créer une clé primaire composite dans MySQL.

Exemples de clé primaire composite MySQL

Voici comment créer une clé primaire composite dans MySQL lors de la création d'une table. Supposons que vous souhaitiez créer des commandes (id_commande, identifiant_produit, montant) table avec clé primaire composite (order_id, product_id).

mysql> CREATE TABLE orders_list (
          order_id INT,
          product_id INT,
          amount INT,
          PRIMARY KEY (order_id, product_id)
     ) ;

mysql> describe orders_list;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| order_id   | int(11) | NO   | PRI | 0       |       |
| product_id | int(11) | NO   | PRI | 0       |       |
| amount     | int(11) | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Dans la requête ci-dessus, nous avons créé la clé primaire composite (order_id, product_id). Dans la sortie ci-dessus, vous verrez PRI mentionné dans la colonne Clé pour order_id, product_id indiquant qu'ils font tous deux partie de la clé primaire.

Lecture bonus :comment tronquer une table dans MySQL

Ajouter une clé primaire composite dans une table existante

Voici un exemple de la façon d'ajouter une clé primaire composite dans une table existante. Disons que vous avez le tableau suivant

mysql> CREATE TABLE new_orders (
         order_id INT,
         product_id INT,
     amount INT
     ) ;

mysql> describe new_orders;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| order_id   | int(11) | YES  |     | NULL    |       |
| product_id | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Comme vous pouvez le voir, les nouvelles_commandes table n'a pas de clé primaire. Voici la requête SQL pour ajouter une clé primaire composite à l'aide d'ALTER TABLE.

Lecture bonus :MySQL DROP VIEW

mysql> alter table new_orders ADD PRIMARY KEY (order_id, product_id);

mysql> describe new_orders;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| order_id   | int(11) | NO   | PRI | 0       |       |
| product_id | int(11) | NO   | PRI | 0       |       |
| amount     | int(11) | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Veuillez noter que vous ne pouvez pas créer de clé primaire composite MySQL avec incrémentation automatique.

Lecture bonus :Comment créer un index dans MySQL

Indice de clé primaire composite MySQL

Vous pouvez créer un index pour la clé primaire composite qui utilise les mêmes champs présents dans votre clé primaire composite.

mysql> alter table new_orders ADD INDEX new_index (order_id, product_id);

J'espère que vous pouvez maintenant créer une clé primaire composite dans MySQL.

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !