修改表名

语法如下:

alter table 旧表名 rename 新表名;
alter table 旧表名 rename to 新表名;

示例:

alter table school.student rename to school.sutdent_2022;

添加新字段

语法如下:

alter table 表名 add 新字段名 数据类型 [约束条件] [first | after 表中已存在的字段名];

first:新字段放在表中第一位;

after:新字段放在指定的表中已存在的字段后面;

不指定first|after参数:新字段放在表中最后;

示例:

在表的开头添加一个字段:

alter table school.student add teacher_id int first;

在表的最后添加一个字段:

alter table school.student add teacher_id int;
alter table school.student add teacher_id int not null;

在指定字段后添加一个字段:

alter table school.student add teacher_id int after student_id;

修改字段名

语法如下:

alter table 表名 change 旧字段名 新字段名 新数据类型;

示例:

alter table school.student change id student_id int;

修改字段名时,可同时修改数据类型。如果不需要修改数据类型,将新数据类型保持跟原来一致即可。

当旧字段名与新字段名一致时,该语句也可以只修改数据类型。

修改字段的数据类型

语法如下:

alter table 表名 modify 字段名 新数据类型;

示例:

alter table school.student modify student_name varchar(100);

删除字段

语法如下:

alter table 表名 drop 字段名;

示例:

alter table school.student drop teacher_id;

修改字段的位置

语法如下:

alter table 表名 modify 字段名 数据类型 first|after 另一个字段名;

示例:

修改字段teacher_id为表中的第一个字段:

alter table school.student modify teacher_id int first;

修改字段teacher_id到字段student_name的后面:

alter table school.student modify teacher_id int after student_name;

修改表的存储引擎

语法如下:

alter table 表名 engine=新存储引擎名;

示例:

alter table school.student engine=MyISAM;

添加主键约束

语法如下:

alter table 表名 add primary key(字段1,字段2,...);

示例:

alter table school.student add primary key(student_id);

删除表的主键约束

语法如下:

alter table 表名 drop primary key;

示例:

alter table school.student drop primary key;

添加表的外键约束

语法如下:

alter table 表名 add constraint 约束名 foreign key(字段1,字段2,...) references 主表名(字段1,字段2,...);

示例:

alter table school.student drop foreign key fk1;

注意:外键字段的数据类型、字符集要与主表字段保持一致,否则可能会报不兼容的错误。

删除表的外键约束

语法如下:

alter table 表名 drop foreign key 外键约束名;

示例:

alter table school.student drop foreign key fk1;

其他约束

语法如下:

--添加非空约束
alter table 表名 modify 字段名 数据类型 not null;
--删除非空约束
alter table 表名 modify 字段名 数据类型 null;
--添加唯一约束
alter table 表名 add unique 约束名(字段1,字段2,...);
--删除唯一约束
drop index 约束名 on 表名;
alter table 表名 drop key 约束名;
alter table 表名 drop index 约束名;
--添加自增长约束
alter table 表名 modify 字段名 int auto_increment;
--删除自增长约束
alter table 表名 modify 字段名 int;
--添加默认值约束
alter table 表名 alter 字段名 set default '默认值';
--删除默认值约束
alter table 表名 alter 字段名 drop default;

示例:

--添加非空约束
alter table student_2023 modify student_id int not null;
--删除非空约束
alter table student_2023 modify student_id int null;
--添加唯一约束
alter table student_2023 add unique unq1(student_id);
--删除唯一约束
drop index unq1 on student_2023;
alter table student_2023 drop key unq1;
alter table student_2023 drop index unq1;
--添加自增长约束
alter table student_2023 modify student_id int auto_increment;
--删除自增长约束
alter table student_2023 modify student_id int;
--添加默认值约束
alter table student_2023 alter student_id set default 0;
--删除默认值约束
alter table student_2023 alter student_id drop default;

当表中有外键约束时,需要先删除外键约束,再删除其他约束。否则可能会报。

picture loss