sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar en sammansatt primär nyckel i MySQL

Ibland kan du behöva skapa en sammansatt primärnyckel som består av flera fält, för databastabeller. Så här skapar du sammansatt primärnyckel i MySQL.

Hur man skapar en sammansatt primär nyckel i MySQL

Här är stegen för att skapa sammansatt primärnyckel i MySQL. Du kan skapa sammansatt primärnyckel, antingen under tabellskapandet med CREATE TABLE-satsen eller efter att ha skapat tabeller med ALTER TABLE-satsen. Vi kommer att titta på båda dessa exempel för att skapa sammansatt primärnyckel i MySQL.

Exempel på MySQL Composite Primärnyckel

Så här skapar du sammansatt primärnyckel i MySQL under tabellskapandet. Låt oss säga att du vill skapa order(order_id, produkt_id, belopp) tabell med sammansatt primärnyckel (order-id, produkt-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    |       |
+------------+---------+------+-----+---------+-------+

I ovanstående fråga har vi skapat sammansatt primärnyckel (order_id, product_id). I ovanstående utdata kommer du att se PRI som nämns i nyckelkolumnen för order_id, product_id indikerar att de båda är delar av primärnyckeln.

Bonus Läs:Hur man trunkerar tabell i MySQL

Lägg till sammansatt primärnyckel i befintlig tabell

Här är ett exempel på hur man lägger till sammansatt primärnyckel i befintlig tabell. Låt oss säga att du har följande tabell

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

Som du kan se new_orders tabellen har ingen primärnyckel. Här är SQL-frågan för att lägga till sammansatt primärnyckel med ALTER TABLE.

Bonus Läs: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    |       |
+------------+---------+------+-----+---------+-------+

Observera att du inte kan skapa MySQL sammansatt primärnyckel med automatisk ökning.

Bonus Läs:Hur man skapar index i MySQL

MySQL Composite Primary Key Index

Du kan skapa ett index för sammansatt primärnyckel som använder samma fält som finns i din sammansatta primärnyckel.

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

Förhoppningsvis kan du nu skapa sammansatt primärnyckel i MySQL.

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Dapper.NET och lagrad proc med flera resultatuppsättningar

  2. Användardefinierad rutin med DBMS_STATS, del II

  3. Vilket är formatet för PostgreSQL-anslutningssträngen/URL?

  4. 12.2 RAC/GI Nya funktioner