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也可以用来修改列名
原文地址:https://www.cnblogs.com/suiy-160428/p/5649911.html