如何在 MySQL 中使用 ALTER 表新增複合主鍵?


要新增複合主鍵,請使用 ALTER 命令。我們首先建立一個演示表

建立一個表的查詢。

mysql> create table CompositePrimaryKey
   -> (
   -> Id int,
   -> StudentName varchar(100),
   -> Age int
   -> );
Query OK, 0 rows affected (0.56 sec)

到目前為止,尚未新增複合主鍵。讓我們藉助 desc 命令進行檢查。

mysql> desc CompositePrimaryKey;

以下是輸出。

+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Id          | int(11)      | YES  |     | NULL    |       |
| StudentName | varchar(100) | YES  |     | NULL    |       |
| Age         | int(11)      | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.09 sec)

檢視上面的示例輸出,此處沒有 primary 關鍵字。這本身說明不存在複合主鍵。

現在,讓我們使用 ALTER 命令新增複合主鍵。查詢如下。

mysql>  ALTER table CompositePrimaryKey add primary key(Id,StudentName);
Query OK, 0 rows affected (1.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

上面,我已使用列名“Id”和“StudentName”添加了複合主鍵。為了檢查相同的內容,我們可以使用 DESC 命令。查詢如下。

mysql> DESC CompositePrimaryKey;

以下是輸出。

+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Id          | int(11)      | NO   | PRI | NULL    |       |
| StudentName | varchar(100) | NO   | PRI | NULL    |       |
| Age         | int(11)      | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

正如我們在以上輸出中看到的, “PR”表示我們已成功在列 Id 和 StudentName 上添加了複合主鍵。

更新於: 2019 年 7 月 30 日

1K+ 瀏覽量

開啟你的 職業生涯

完成課程並獲得認證

立即開始
廣告