mysql 如何修改、添加、删除表主键
在我们使用mysql的时候,有时会遇到须要更改或者删除mysql的主键,我们能够简单的使用alter table table_name drop primary key;来完成。以下我使用数据表table_test来作了样例。
1、首先创建一个数据表table_test:
create table table_test(
`id` varchar(100) not null,
`name` varchar(100) not null,
primary key (`name`)
)engine=myisam default charset=gb2312;
2、如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。
先删除主键
alter table table_test drop primary key;
然后再增加主键
alter table table_test add primary key(id);
注:在增加主键之前,必须先把反复的id删除掉。
以下内容转自:http://www.cnblogs.com/suiy-160428/p/5649911.html
mysql修改主键属性:
前言:在学习mysql的过程中,对于主键的属性以及操作理解较模糊,在输入多条修改主键属性的语句后经常报错,所以想整理一下这个过程中遇到的问题,作为自己的学习记录,可能都是基础知识,但也希望提高自己对数据库的理解,同时也能帮助到其他人。
主键约束在数据表中可以定义一个主键值,唯一确定表中的每一条记录。每张表中只能有一个primary key,并且primary key不能为空。如果主键约束定义在不止一列,则一列的值可以重复,但是主键约束定义中的所有列组合必须唯一。
1. 添加主键约束:
alter table tbl_name add primary key (index_col_name,…); #括号中为字段名,可以为一个或者多个
2. 在数据表已存在的情况下,且无主键,添加新的字段作为主键,并将该字段移到表格的第一列
alter table tbl_name add col_name col_definition (data type, null, default...) primary key first current_first_col_name; # current_first_col_name表示当前数据表的第一列
notes:关键字first表示位于某一列的前面,如果加入的字段需要位于某一列的后面,可以使用after
3. 数据表已存在,且有主键,修改主键的定义
关键字modify
alter table tbl_name modify col_name col_definition [first|after col_name] #在col_definition 声明要修改的属性,如要添加自动编号auto_increment
notes:
1) 此时不需要重新声明主键属性primary key,如果添加了则会报错:主键重复;
2) 如果原有属性中存在auto_increment,修改时需要加上auto_increment,否则auto_increment属性被删除
关键字change
alter table tbl_name change col_name col_name col_definition [first|after col_name] #与modify的区别在于列表需要写两次列名,相当于原列名和新列名,所以change也可以用来修改列名
下一篇: check约束