Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare una chiave primaria composita in MySQL

A volte potrebbe essere necessario creare una chiave primaria composita composta da più campi per le tabelle del database. Ecco come creare una chiave primaria composita in MySQL.

Come creare una chiave primaria composita in MySQL

Ecco i passaggi per creare una chiave primaria composita in MySQL. È possibile creare una chiave primaria composita, sia durante la creazione della tabella utilizzando l'istruzione CREATE TABLE, sia dopo aver creato le tabelle utilizzando l'istruzione ALTER TABLE. Analizzeremo entrambi questi esempi per creare una chiave primaria composita in MySQL.

Esempi di chiavi primarie composite MySQL

Ecco come creare una chiave primaria composita in MySQL durante la creazione della tabella. Supponiamo che tu voglia creare ordini(order_id, product_id, amount) tabella con chiave primaria composita (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    |       |
+------------+---------+------+-----+---------+-------+

Nella query precedente, abbiamo creato la chiave primaria composita (order_id, product_id). Nell'output sopra, vedrai PRI menzionato nella colonna Chiave per order_id, product_id indicando che sono entrambe parti della chiave primaria.

Bonus Leggi:Come troncare la tabella in MySQL

Aggiungi chiave primaria composita nella tabella esistente

Ecco un esempio di come aggiungere una chiave primaria composita in una tabella esistente. Supponiamo che tu abbia la seguente tabella

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

Come puoi vedere i nuovi_ordini la tabella non ha una chiave primaria. Ecco la query SQL per aggiungere la chiave primaria composita utilizzando ALTER TABLE.

Bonus Lettura: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    |       |
+------------+---------+------+-----+---------+-------+

Tieni presente che non puoi creare una chiave primaria composita MySQL con incremento automatico.

Bonus Leggi:Come creare un indice in MySQL

Indice chiave primaria composita MySQL

Puoi creare un indice per la chiave primaria composita che utilizzi gli stessi campi presenti nella tua chiave primaria composita.

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

Si spera che ora sia possibile creare una chiave primaria composita in MySQL.

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!