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!