mysql如何修改唯一性約束跟主鍵約束

2021-08-08 12:30:27 字數 1933 閱讀 2975

一、如何新增主鍵約束和唯一性約束

1、新增主鍵約束

執行語法:

alter table tablename add primarykey(column_name);#千萬別忘了加(),同時要保證表結構中沒有其他的主鍵,因為乙個表中只能有乙個主鍵。
2、新增唯一性約束

執行語法:

alter table tablename addunique(column_name);#乙個表中可以有多個唯一性約束。
二、刪除主鍵和唯一性約束1、刪除主鍵

在mysql中刪除主鍵需要兩步.

(1)如果有auto_increment,先刪除之;

(2)刪除主鍵約束 primary key。

以本人自建資料表aaa為例

首先要刪除auto——increment

語法如下:

alter table aaa modify id int(11);#這裡用的modify,只改變資料型別,也可以用change,改變列名的同時輸入新的資料型別。
執行後,表結構如下:

下一步就是刪除主鍵

語法如下:

alter table aaa drop primary key;
執行完,表結構如下:

這時候主鍵就已經刪除成功了。

2、刪除唯一性約束

語法如下:

alter table tablename drop index key_name;#刪除唯一性約束,實際就是刪除索引

drop index key_name on tablename;#兩種方法均可
究其原因,是我們把key_name跟column_name混淆了,注意上面的語法中我寫的是key_name,並非colunm_name。在學習mysql的過程中,尤其是練習時,經常會進行修改列名的操作,如果你在修改列名以前就已經定義了本列為唯一性約束,那麼鍵名還是修改前的列名。這個時候就需要我們查一下表的key結構,找到key_name。

語法如下:

show keys from tablename;
執行後,結果為

注意,我這裡的key_name跟column_name就是不同的,所以在執行 drop index loc on aaa;時就會一直提示錯誤。

所以,要執行以下語法才可以:

alter table aaa drop index location;
執行完,結果為

這個時候,loc的唯一性約束就刪除了。

其實,當我們不確定是否改過列名時,就可以直接通過show keys來找到key_name,這樣不管有沒有改變列名,都有key_name為準,就可以準確的刪除唯一性約束了。

mysql 唯一約束 Mysql 唯一性約束新增

一 單列唯一約束 1.建表時加上唯一性約束 create table t user id int 11 not null auto increment,username varchar 18 not null unique,password varchar 18 not null,primary k...

Oracle唯一性約束和唯一性索引的關係

唯一性約束通過唯一性索引來實現?我覺得這說法不對。對於唯一性約束,索引是必須存在的,唯一性約束本質上是通過索引來保證的,但不一定是唯一性索引。唯一性約束允許有null值,唯一性約束的列可允許有多個null值。唯一性約束通過btree索引實現,而btree索引是不會包含null值,但使用null值過濾...

Oracle 12 唯一性約束

前言 唯一性約束和主鍵的區別 主鍵 primary key 所有組成主鍵的列都不能包含空值。唯一性約束 unique constraint 如果唯一性約束由多列組成,其中的部分列可以包含空值。oracle中不容許在相同列上既建立主鍵又建立唯一性約束,主鍵本來就具有唯一性。正文 1,建立表時同時建立唯...