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!