mysql如何修改唯一性约束跟主键约束

一、如何添加主键约束和唯一性约束

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; #两种方法均可

但我在练习删除唯一性约束的时候,刚开始一直出现:ERROR 1091 (42000): Can't DROP 'loc'; check that column/key exists 这样的报错,百思不得其解,经过不懈的百度,终于找到原因,特地跟大家分享一下,希望不要再犯同样的错误。

究其原因,是我们把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为准,就可以准确的删除唯一性约束了。


  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值