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

Sådan opretter du sammensat primær nøgle i MySQL

Nogle gange skal du muligvis oprette en sammensat primærnøgle bestående af flere felter til databasetabeller. Sådan opretter du sammensat primær nøgle i MySQL.

Sådan opretter du sammensat primær nøgle i MySQL

Her er trinene til at oprette sammensat primær nøgle i MySQL. Du kan oprette sammensat primær nøgle, enten under oprettelse af tabel ved hjælp af CREATE TABLE-sætning eller efter oprettelse af tabeller ved hjælp af ALTER TABLE-sætning. Vi vil se på begge disse eksempler for at skabe sammensat primær nøgle i MySQL.

MySQL Composite Primary Key Eksempler

Sådan opretter du sammensat primær nøgle i MySQL under oprettelse af tabel. Lad os sige, at du vil oprette ordrer (ordre_id, product_id, amount) tabel med sammensat primær nøgle (ordre_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    |       |
+------------+---------+------+-----+---------+-------+

I ovenstående forespørgsel har vi oprettet sammensat primær nøgle (order_id, product_id). I ovenstående output vil du se PRI nævnt i nøglekolonnen for order_id, product_id angiver, at de begge er dele af den primære nøgle.

Bonus Læs:Sådan afkortes tabel i MySQL

Tilføj sammensat primær nøgle i eksisterende tabel

Her er et eksempel på, hvordan man tilføjer sammensat primær nøgle i eksisterende tabel. Lad os sige, at du har følgende tabel

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 nye_ordrer tabel har ikke en primær nøgle. Her er SQL-forespørgslen for at tilføje sammensat primær nøgle ved hjælp af 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    |       |
+------------+---------+------+-----+---------+-------+

Bemærk venligst, at du ikke kan oprette MySQL sammensat primær nøgle med automatisk stigning.

Bonus Læs:Sådan opretter du indeks i MySQL

MySQL Composite Primary Key Index

Du kan oprette et indeks for sammensat primær nøgle, der bruger de samme felter, der findes i din sammensatte primærnøgle.

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

Forhåbentlig kan du nu oprette sammensat primær nøgle i MySQL.

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Behøver at droppe en database ikke ske i nogen transaktion?

  2. Sådan returneres den aktuelle rækkeversionsværdi for en SQL Server-database (T-SQL-eksempel)

  3. Sådan forankres/ophæves forespørgsel til Windows og andre faner i SQL Server Management Studio ( SSMS) - SQL Server / TSQL vejledning del 21

  4. Sådan finder du de datoformater, der bruges til et bestemt sprog i SQL Server (T-SQL)