前言:在学习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也可以用来修改列名