Soms moet u voor databasetabellen een samengestelde primaire sleutel maken die uit meerdere velden bestaat. Hier leest u hoe u een samengestelde primaire sleutel in MySQL maakt.
Hoe maak je een samengestelde primaire sleutel in MySQL
Hier zijn de stappen om een samengestelde primaire sleutel in MySQL te maken. U kunt een samengestelde primaire sleutel maken tijdens het maken van tabellen met de instructie CREATE TABLE, of na het maken van tabellen met de instructie ALTER TABLE. We zullen beide voorbeelden bekijken om een samengestelde primaire sleutel in MySQL te maken.
MySQL Composite Primary Key-voorbeelden
Hier leest u hoe u een samengestelde primaire sleutel in MySQL maakt tijdens het maken van tabellen. Stel dat u bestellingen wilt maken (order_id, product_id, hoeveelheid) tabel met samengestelde primaire sleutel (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 | | +------------+---------+------+-----+---------+-------+
In de bovenstaande zoekopdracht hebben we samengestelde primaire sleutel (order_id, product_id) gemaakt. In de bovenstaande uitvoer ziet u PRI vermeld in de kolom Sleutel voor order_id, product_id wat aangeeft dat ze beide delen van de primaire sleutel zijn.
Bonus Lezen:Tabel in MySQL afkappen
Voeg samengestelde primaire sleutel toe in bestaande tabel
Hier is een voorbeeld van hoe u een samengestelde primaire sleutel in een bestaande tabel kunt toevoegen. Stel dat u de volgende tabel heeft
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 | | +------------+---------+------+-----+---------+-------+
Zoals je kunt zien, zijn de new_orders tabel heeft geen primaire sleutel. Hier is de SQL-query om een samengestelde primaire sleutel toe te voegen met behulp van ALTER TABLE.
Bonus lezen: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 | | +------------+---------+------+-----+---------+-------+
Let op:u kunt geen samengestelde MySQL-sleutel maken met automatische verhoging.
Bonus Lezen:Index maken in MySQL
MySQL samengestelde primaire sleutelindex
U kunt een index voor samengestelde primaire sleutel maken die dezelfde velden gebruikt als in uw samengestelde primaire sleutel.
mysql> alter table new_orders ADD INDEX new_index (order_id, product_id);
Hopelijk kun je nu een samengestelde primaire sleutel maken in MySQL.
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!