mysql修改表時怎么添加主鍵約束?

mysql中可以通過“ALTER TABLE 表名 ADD PRIMARY KEY(字段名);”語句在修改數據表時添加主鍵約束;當在修改表時要設置表中某個字段的主鍵約束時,要確保設置成主鍵約束的字段中值不能夠有重復的,并且要保證是非空的。

mysql修改表時怎么添加主鍵約束?

(推薦教程:mysql視頻教程

主鍵(PRIMARY KEY)的完整稱呼是“主鍵約束”,是?MySQL?中使用最為頻繁的約束。一般情況下,為了便于 DBMS 更快的查找到表中的記錄,都會在表中設置一個主鍵。

在創建表時設置主鍵約束

在 CREATE TABLE 語句中,通過 PRIMARY KEY 關鍵字來指定主鍵。

在定義字段的同時指定主鍵,語法格式如下:

??PRIMARY?KEY?[默認值]

示例

在 test_db 數據庫中創建 tb_emp3 數據表,其主鍵為 id,SQL 語句和運行結果如下。

mysql>?CREATE?TABLE?tb_emp3 ????->?( ????->?id?INT(11)?PRIMARY?KEY, ????->?name?VARCHAR(25), ????->?deptId?INT(11), ????->?salary?FLOAT ????->?); Query?OK,?0?rows?affected?(0.37?sec) mysql>?DESC?tb_emp3; +--------+-------------+------+-----+---------+-------+ |?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)

在修改表時添加主鍵約束

主鍵約束不僅可以在創建表的同時創建,也可以在修改表時添加。但是需要注意的是,設置成主鍵約束的字段中不允許有空值。

在修改數據表時添加主鍵約束的語法格式如下:

ALTER?TABLE??ADD?PRIMARY?KEY();

通常情況下,當在修改表時要設置表中某個字段的主鍵約束時,要確保設置成主鍵約束的字段中值不能夠有重復的,并且要保證是非空的。否則,無法設置主鍵約束。

示例

查看 tb_emp2 數據表的表結構,SQL 語句和運行結果如下所示。

mysql>?DESC?tb_emp2; +--------+-------------+------+-----+---------+-------+ |?Field??|?Type????????|?Null?|?Key?|?Default?|?Extra?| +--------+-------------+------+-----+---------+-------+ |?id?????|?int(11)?????|?NO???|?????|?NULL????|???????| |?name???|?varchar(30)?|?YES??|?????|?NULL????|???????| |?deptId?|?int(11)?????|?YES??|?????|?NULL????|???????| |?salary?|?float???????|?YES??|?????|?NULL????|???????| +--------+-------------+------+-----+---------+-------+ 4?rows?in?set?(0.14?sec)

修改數據表 tb_emp2,將字段 id 設置為主鍵,SQL 語句和運行結果如下。

mysql>?ALTER?TABLE?tb_emp2 ????->?ADD?PRIMARY?KEY(id); Query?OK,?0?rows?affected?(0.94?sec) Records:?0??Duplicates:?0??Warnings:?0 mysql>?DESC?tb_emp2; +--------+-------------+------+-----+---------+-------+ |?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)

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享