「主鍵(PRIMARY KEY)」的完整稱呼是「主鍵約束」。 MySQL 主鍵約束是一個欄位或欄位的組合,其值能唯一地識別表中的每一行。這樣的一列或多列稱為表的主鍵,透過它可以強製表的實體完整性。那麼在MySQL中如何加入主鍵約束呢?下面本篇文章就來跟大家介紹一下。
主鍵約束即在表中定義一個主鍵來唯一確定表中每一行資料的識別碼。主鍵可以是表中的某一列或多列的組合,其中由多列組合的主鍵稱為複合主鍵。主鍵應該遵守下面的規則:
● 每個表只能定義一個主鍵。
● 主鍵值必須唯一標識表中的每一行,且不能為 NULL,即表中不可能存在兩行資料有相同的主鍵值。這是唯一性原則。
● 一個欄位名稱只能在複合主鍵清單中出現一次。
● 複合主鍵不能包含不必要的多餘列。當把複合主鍵的某一列刪除後,如果剩下的列構成的主鍵仍然滿足唯一性原則,那麼這個複合主鍵是不正確的。這是最小化原則。
1、在建立表格時新增主鍵約束
在 CREATE TABLE 語句中,主鍵是透過 PRIMARY KEY 關鍵字來指定的。
在定義列的同時指定主鍵,語法規則如下:
<字段名> <数据类型> PRIMARY KEY [默认值]
範例:在test_db 資料庫中建立tb_emp 1 資料表,其主鍵為id
mysql> CREATE TABLE tb_emp1 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
在定義完所有欄位之後,指定主鍵的語法格式為:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
範例:在test_db 資料庫中建立tb_emp 2 資料表,其主鍵為id
mysql> CREATE TABLE tb_emp2 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
2、在建立表格後新增主鍵約束
建立表格後,可以在修改資料表時新增主鍵約束,語法規則為:
ALTER TABLE <数据表名> ADD PRIMARY KEY(<列名>);
範例:修改資料表tb_emp3,將字段id 設定為主鍵
mysql> ALTER TABLE tb_emp3 -> ADD PRIMARY KEY(id); Query OK, 0 rows affected (0.94 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp3; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.12 sec)
3、設定複合主鍵
也可以在建立表格時新增複合主鍵,此時主鍵由多個欄位結合組成,語法規則如下:
PRIMARY KEY [字段1,字段2,…,字段n]
範例:建立資料表tb_emp4,假設表中沒有主鍵id,為了唯一確定一個員工,可以把name、deptId 聯合起來當作主鍵
mysql> CREATE TABLE tb_emp4 -> ( -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id,deptId) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp4; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(25) | NO | PRI | NULL | | | deptId | int(11) | NO | PRI | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.14 sec)
以上是mysql如何新增主鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!