一、如何新增主鍵約束和唯一性約束
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,建立表時同時建立唯...